(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined, "[project]/src/components/game/StarfieldCanvas.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "StarfieldCanvas", ()=>StarfieldCanvas ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 深空星空背景 Canvas var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; function StarfieldCanvas({ className }) { _s(); const canvasRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "StarfieldCanvas.useEffect": ()=>{ const canvas = canvasRef.current; if (!canvas) return; const ctx = canvas.getContext("2d"); if (!ctx) return; let w = 0; let h = 0; let dpr = 1; let stars = []; const dust = []; let raf = 0; let lastT = performance.now(); const palette = [ "#34d399", "#fb7185", "#fbbf24", "#e879f9", "#a5f3fc" ]; function resize() { dpr = Math.min(2, window.devicePixelRatio || 1); w = canvas.clientWidth; h = canvas.clientHeight; canvas.width = Math.floor(w * dpr); canvas.height = Math.floor(h * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0); // 生成星星:密度随面积 const count = Math.min(220, Math.floor(w * h / 7000)); stars = Array.from({ length: count }, { "StarfieldCanvas.useEffect.resize": ()=>({ x: Math.random() * w, y: Math.random() * h, z: Math.random(), r: Math.random() * 1.4 + 0.2, tw: Math.random() * Math.PI * 2, hue: Math.random() < 0.15 ? Math.floor(Math.random() * palette.length) : -1 }) }["StarfieldCanvas.useEffect.resize"]); } resize(); const ro = new ResizeObserver(resize); ro.observe(canvas); function spawnDust() { if (dust.length > 60) return; const color = palette[Math.floor(Math.random() * palette.length)]; dust.push({ x: Math.random() * w, y: h + 10, vx: (Math.random() - 0.5) * 0.3, vy: -(Math.random() * 0.5 + 0.2), life: 0, maxLife: 600 + Math.random() * 800, color }); } function draw(t) { const dt = t - lastT; lastT = t; // 背景渐变 const g = ctx.createRadialGradient(w * 0.5, h * 0.4, 0, w * 0.5, h * 0.5, Math.max(w, h) * 0.8); g.addColorStop(0, "#1a0f2e"); g.addColorStop(0.45, "#0d0a1f"); g.addColorStop(1, "#050410"); ctx.fillStyle = g; ctx.fillRect(0, 0, w, h); // 星云团块 ctx.globalCompositeOperation = "screen"; for(let i = 0; i < 3; i++){ const cx = w * (0.2 + i * 0.3) + Math.sin(t / 9000 + i) * 40; const cy = h * (0.3 + i % 2 * 0.4) + Math.cos(t / 11000 + i) * 30; const rad = Math.max(80, Math.min(w, h) * (0.25 + i * 0.05)); const ng = ctx.createRadialGradient(cx, cy, 0, cx, cy, rad); const col = i === 0 ? "rgba(232,121,249,0.10)" : i === 1 ? "rgba(52,211,153,0.08)" : "rgba(251,113,133,0.08)"; ng.addColorStop(0, col); ng.addColorStop(1, "rgba(0,0,0,0)"); ctx.fillStyle = ng; ctx.beginPath(); ctx.arc(cx, cy, rad, 0, Math.PI * 2); ctx.fill(); } ctx.globalCompositeOperation = "source-over"; // 星星 for (const s of stars){ s.tw += 0.02 + s.z * 0.04; const alpha = 0.4 + Math.sin(s.tw) * 0.35 + s.z * 0.3; if (s.hue >= 0) { ctx.fillStyle = palette[s.hue]; ctx.globalAlpha = Math.max(0, Math.min(1, alpha)); ctx.beginPath(); ctx.arc(s.x, s.y, s.r * 1.6, 0, Math.PI * 2); ctx.fill(); // 光晕 ctx.globalAlpha = Math.max(0, Math.min(1, alpha * 0.25)); ctx.beginPath(); ctx.arc(s.x, s.y, s.r * 4, 0, Math.PI * 2); ctx.fill(); } else { ctx.fillStyle = `rgba(220,230,255,${Math.max(0, Math.min(1, alpha))})`; ctx.beginPath(); ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2); ctx.fill(); } // 缓慢漂移 s.y += 0.02 + s.z * 0.05; if (s.y > h + 2) { s.y = -2; s.x = Math.random() * w; } } ctx.globalAlpha = 1; // 偶尔生成星尘 if (Math.random() < 0.04) spawnDust(); // 星尘 ctx.globalCompositeOperation = "screen"; for(let i = dust.length - 1; i >= 0; i--){ const d = dust[i]; d.life += dt; d.x += d.vx * dt * 0.06; d.y += d.vy * dt * 0.06; if (d.life > d.maxLife || d.y < -10) { dust.splice(i, 1); continue; } const a = Math.sin(d.life / d.maxLife * Math.PI) * 0.7; ctx.fillStyle = d.color; ctx.globalAlpha = a; ctx.beginPath(); ctx.arc(d.x, d.y, 1.6, 0, Math.PI * 2); ctx.fill(); ctx.globalAlpha = a * 0.2; ctx.beginPath(); ctx.arc(d.x, d.y, 5, 0, Math.PI * 2); ctx.fill(); } ctx.globalAlpha = 1; ctx.globalCompositeOperation = "source-over"; raf = requestAnimationFrame(draw); } raf = requestAnimationFrame(draw); return ({ "StarfieldCanvas.useEffect": ()=>{ cancelAnimationFrame(raf); ro.disconnect(); } })["StarfieldCanvas.useEffect"]; } }["StarfieldCanvas.useEffect"], []); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("canvas", { ref: canvasRef, className: className, "aria-hidden": "true" }, void 0, false, { fileName: "[project]/src/components/game/StarfieldCanvas.tsx", lineNumber: 175, columnNumber: 5 }, this); } _s(StarfieldCanvas, "UJgi7ynoup7eqypjnwyX/s32POg="); _c = StarfieldCanvas; var _c; __turbopack_context__.k.register(_c, "StarfieldCanvas"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/progress.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Progress", ()=>Progress ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$progress$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-progress/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; function Progress({ className, value, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$progress$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "progress", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full", className), ...props, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$progress$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Indicator"], { "data-slot": "progress-indicator", className: "bg-primary h-full w-full flex-1 transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }, void 0, false, { fileName: "[project]/src/components/ui/progress.tsx", lineNumber: 22, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/ui/progress.tsx", lineNumber: 14, columnNumber: 5 }, this); } _c = Progress; ; var _c; __turbopack_context__.k.register(_c, "Progress"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/ResourceBar.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ResourceBar", ()=>ResourceBar ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 顶栏资源栏 var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$gem$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Gem$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/gem.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lightbulb$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lightbulb$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/lightbulb.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$waves$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Waves$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/waves.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/progress.tsx [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; function ResourceBar({ onPrestige }) { _s(); const crystals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[crystals]": (s)=>s.crystals }["ResourceBar.useGameStore[crystals]"]); const crystalsPerSec = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[crystalsPerSec]": (s)=>s.crystalsPerSec }["ResourceBar.useGameStore[crystalsPerSec]"]); const insights = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[insights]": (s)=>s.insights }["ResourceBar.useGameStore[insights]"]); const contact = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[contact]": (s)=>s.contact }["ResourceBar.useGameStore[contact]"]); const ascensions = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[ascensions]": (s)=>s.ascensions }["ResourceBar.useGameStore[ascensions]"]); const blueprints = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ResourceBar.useGameStore[blueprints]": (s)=>s.blueprints }["ResourceBar.useGameStore[blueprints]"]); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-2 sm:gap-x-4 px-3.5 py-2.5 rounded-2xl border border-white/10 bg-black/40 backdrop-blur-md", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Stat, { icon: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$gem$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Gem$3e$__["Gem"], { className: "h-4 w-4 text-emerald-400" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 20, columnNumber: 15 }, void 0), label: "记忆晶体", value: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(crystals), sub: `+${crystalsPerSec.toFixed(1)}/s`, glow: "rgba(52,211,153,0.4)" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 19, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 26, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Stat, { icon: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lightbulb$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lightbulb$3e$__["Lightbulb"], { className: "h-4 w-4 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 29, columnNumber: 15 }, void 0), label: "技术洞见", value: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(insights), sub: "解码产出", glow: "rgba(251,191,36,0.4)" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 28, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 35, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 min-w-[200px] flex flex-col gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$waves$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Waves$3e$__["Waves"], { className: "h-4 w-4 text-fuchsia-400 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 39, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-xs text-muted-foreground whitespace-nowrap", children: "接触进度" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 40, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-xs font-mono font-semibold text-fuchsia-300 ml-auto tabular-nums", children: [ contact.toFixed(1), "%" ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 41, columnNumber: 11 }, this), contact >= 100 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: onPrestige, className: "text-[10px] px-2 py-0.5 rounded-full bg-fuchsia-500/20 border border-fuchsia-400/50 text-fuchsia-200 hover:bg-fuchsia-500/30 transition animate-pulse whitespace-nowrap ml-1", children: "飞升" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 45, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 38, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: contact, className: "h-1.5 bg-white/10 [&>div]:bg-gradient-to-r [&>div]:from-fuchsia-500 [&>div]:to-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 53, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 37, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 58, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__["RotateCcw"], { className: "h-4 w-4 text-rose-400 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 61, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col gap-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] text-muted-foreground leading-none", children: "飞升" }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 63, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-baseline gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-sm font-mono font-semibold leading-none", children: ascensions }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 65, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-amber-300 text-xs leading-none", children: [ "×", blueprints.length ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 68, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 64, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 62, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 60, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 17, columnNumber: 5 }, this); } _s(ResourceBar, "wIfOv/6NbYI5LuwMTqrSd44e1M8=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = ResourceBar; function Stat({ icon, label, value, sub, glow }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2.5", style: { filter: `drop-shadow(0 0 6px ${glow})` }, children: [ icon, /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col gap-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] text-muted-foreground leading-none", children: label }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 93, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-baseline gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-sm font-mono font-semibold leading-none tabular-nums", children: value }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 95, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] text-muted-foreground/80 whitespace-nowrap", children: sub }, void 0, false, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 96, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 94, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 92, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ResourceBar.tsx", lineNumber: 90, columnNumber: 5 }, this); } _c1 = Stat; var _c, _c1; __turbopack_context__.k.register(_c, "ResourceBar"); __turbopack_context__.k.register(_c1, "Stat"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/CrystalOrb.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "CrystalOrb", ()=>CrystalOrb ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 中央晶体集群 + 主动脉冲(v0.7 Canvas 粒子系统) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/narrative.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; const COLORS = { emerald: "#34d399", fuchsia: "#e879f9", rose: "#fb7185", amber: "#fbbf24", white: "#ffffff" }; function comboColor(combo) { if (combo >= 5) return COLORS.amber; if (combo >= 3) return COLORS.fuchsia; return COLORS.emerald; } function CrystalOrb() { _s(); const pulse = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "CrystalOrb.useGameStore[pulse]": (s)=>s.pulse }["CrystalOrb.useGameStore[pulse]"]); const crystals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "CrystalOrb.useGameStore[crystals]": (s)=>s.crystals }["CrystalOrb.useGameStore[crystals]"]); const crystalsPerSec = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "CrystalOrb.useGameStore[crystalsPerSec]": (s)=>s.crystalsPerSec }["CrystalOrb.useGameStore[crystalsPerSec]"]); const crystalCap = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "CrystalOrb.useGameStore[crystalCap]": (s)=>s.crystalCap }["CrystalOrb.useGameStore[crystalCap]"]); const combo = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "CrystalOrb.useGameStore[combo]": (s)=>s._combo }["CrystalOrb.useGameStore[combo]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [floats, setFloats] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]); const idRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(0); // Canvas refs const canvasRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); const containerRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); const pulseAnimRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(0); const [pulseAnim, setPulseAnim] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(0); // 触发 SVG 环动画 // 粒子状态 refs(不触发 re-render) const energyParticlesRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])([]); const ambientParticlesRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])([]); const shockRingsRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])([]); const burstParticlesRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])([]); const comboRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(combo); const fillPctRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(0); const crystalsRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(crystals); const crystalCapRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(crystalCap); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "CrystalOrb.useEffect": ()=>{ comboRef.current = combo; crystalsRef.current = crystals; crystalCapRef.current = crystalCap; } }["CrystalOrb.useEffect"], [ combo, crystals, crystalCap ]); const mouseRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])({ x: 0, y: 0, inside: false }); // ===== 初始化粒子 ===== const initParticles = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "CrystalOrb.useCallback[initParticles]": (w, h)=>{ const cx = w / 2; const cy = h / 2; const baseR = Math.min(w, h) * 0.28; // 环绕能量粒子(3 层,每层不同速度方向) const energy = []; const layers = [ { count: 14, rMul: 0.95, speed: 0.6, color: COLORS.emerald }, { count: 10, rMul: 1.15, speed: -0.4, color: COLORS.fuchsia }, { count: 8, rMul: 1.35, speed: 0.3, color: COLORS.rose } ]; layers.forEach({ "CrystalOrb.useCallback[initParticles]": (layer)=>{ for(let i = 0; i < layer.count; i++){ energy.push({ angle: Math.PI * 2 * i / layer.count + Math.random() * 0.3, radius: baseR * layer.rMul, baseRadius: baseR * layer.rMul, speed: layer.speed * (0.8 + Math.random() * 0.4), size: 1.5 + Math.random() * 2, color: layer.color, alpha: 0.5 + Math.random() * 0.4, phase: Math.random() * Math.PI * 2 }); } } }["CrystalOrb.useCallback[initParticles]"]); energyParticlesRef.current = energy; // 环境星尘 const ambient = []; for(let i = 0; i < 40; i++){ ambient.push({ x: Math.random() * w, y: Math.random() * h, vx: (Math.random() - 0.5) * 8, vy: (Math.random() - 0.5) * 8, size: 0.5 + Math.random() * 1.5, alpha: 0.2 + Math.random() * 0.5, twinkle: Math.random() * Math.PI * 2 }); } ambientParticlesRef.current = ambient; void cx; void cy; } }["CrystalOrb.useCallback[initParticles]"], []); // ===== 触发脉冲效果(Canvas 部分)===== const triggerPulseEffect = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "CrystalOrb.useCallback[triggerPulseEffect]": (x, y, res)=>{ const color = comboColor(res.combo); const now = performance.now(); // 冲击波环(多层错峰) shockRingsRef.current.push({ born: now, color: COLORS.emerald, maxRadius: 140, duration: 700 }); if (res.combo >= 3) { shockRingsRef.current.push({ born: now + 100, color: COLORS.fuchsia, maxRadius: 170, duration: 800 }); } if (res.combo >= 5) { shockRingsRef.current.push({ born: now + 200, color: COLORS.amber, maxRadius: 200, duration: 900 }); } // 径向爆发粒子 const pcount = 10 + Math.min(10, res.combo) * 2; for(let i = 0; i < pcount; i++){ const angle = Math.PI * 2 * i / pcount + Math.random() * 0.4; const speed = 120 + Math.random() * 180; burstParticlesRef.current.push({ x, y, vx: Math.cos(angle) * speed, vy: Math.sin(angle) * speed, size: 2 + Math.random() * 3, color, born: now, life: 600 + Math.random() * 300 }); } // 让能量粒子被"推开"再回弹 energyParticlesRef.current.forEach({ "CrystalOrb.useCallback[triggerPulseEffect]": (p)=>{ p.radius = p.baseRadius * (1.25 + Math.random() * 0.15); } }["CrystalOrb.useCallback[triggerPulseEffect]"]); } }["CrystalOrb.useCallback[triggerPulseEffect]"], []); // ===== 点击处理 ===== const handleClick = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "CrystalOrb.useCallback[handleClick]": (e)=>{ const res = pulse(); if (!res) return; const rect = e.currentTarget.getBoundingClientRect(); const x = e.clientX - rect.left; const y = e.clientY - rect.top; const id = idRef.current++; const floatColor = comboColor(res.combo); setFloats({ "CrystalOrb.useCallback[handleClick]": (f)=>[ ...f, { id, x, y, text: `+${res.gain.toFixed(1)}`, born: Date.now(), color: floatColor } ] }["CrystalOrb.useCallback[handleClick]"]); triggerPulseEffect(x, y, res); setPulseAnim({ "CrystalOrb.useCallback[handleClick]": (n)=>n + 1 }["CrystalOrb.useCallback[handleClick]"]); (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])(res.combo >= 3 ? "pulseCombo" : "pulse", { combo: res.combo }); setTimeout({ "CrystalOrb.useCallback[handleClick]": ()=>{ setFloats({ "CrystalOrb.useCallback[handleClick]": (f)=>f.filter({ "CrystalOrb.useCallback[handleClick]": (it)=>it.id !== id }["CrystalOrb.useCallback[handleClick]"]) }["CrystalOrb.useCallback[handleClick]"]); } }["CrystalOrb.useCallback[handleClick]"], 900); if (res.combo >= 5 && res.combo % 5 === 0) { // v0.9 叙事融入:高连击时注入世界观低语 const whisper = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["maybeWhisper"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PULSE_WHISPERS"], 0.6); toast({ title: `×${res.combo} 连击!`, description: whisper ? `「${whisper}」` : "谐振叠加,产能飙升。" }); } else if (res.combo >= 3 && res.combo % 3 === 0) { // 3 连击时也有概率出现叙事 const whisper = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["maybeWhisper"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PULSE_WHISPERS"], 0.3); if (whisper) { toast({ title: "低语", description: `「${whisper}」` }); } } } }["CrystalOrb.useCallback[handleClick]"], [ pulse, toast, triggerPulseEffect ]); // ===== Canvas 动画循环 ===== (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "CrystalOrb.useEffect": ()=>{ const canvas = canvasRef.current; const container = containerRef.current; if (!canvas || !container) return; const ctx = canvas.getContext("2d"); if (!ctx) return; let rafId = 0; let lastTime = performance.now(); let dpr = Math.min(window.devicePixelRatio || 1, 2); const resize = { "CrystalOrb.useEffect.resize": ()=>{ const rect = container.getBoundingClientRect(); dpr = Math.min(window.devicePixelRatio || 1, 2); canvas.width = Math.max(1, Math.floor(rect.width * dpr)); canvas.height = Math.max(1, Math.floor(rect.height * dpr)); canvas.style.width = `${rect.width}px`; canvas.style.height = `${rect.height}px`; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); initParticles(rect.width, rect.height); } }["CrystalOrb.useEffect.resize"]; resize(); const ro = new ResizeObserver(resize); ro.observe(container); const draw = { "CrystalOrb.useEffect.draw": (now)=>{ const dt = Math.min(0.05, (now - lastTime) / 1000); lastTime = now; const w = canvas.width / dpr; const h = canvas.height / dpr; const cx = w / 2; const cy = h / 2; const baseR = Math.min(w, h) * 0.28; ctx.clearRect(0, 0, w, h); // === 1. 环境星尘 === ambientParticlesRef.current.forEach({ "CrystalOrb.useEffect.draw": (p)=>{ p.x += p.vx * dt; p.y += p.vy * dt; p.twinkle += dt * 2; if (p.x < 0) p.x = w; if (p.x > w) p.x = 0; if (p.y < 0) p.y = h; if (p.y > h) p.y = 0; const tw = 0.5 + 0.5 * Math.sin(p.twinkle); ctx.globalAlpha = p.alpha * tw; ctx.fillStyle = "#ffffff"; ctx.beginPath(); ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2); ctx.fill(); } }["CrystalOrb.useEffect.draw"]); ctx.globalAlpha = 1; // === 2. 外层辉光(呼吸)=== const breath = 0.85 + 0.15 * Math.sin(now * 0.001); const glowGrad = ctx.createRadialGradient(cx, cy, baseR * 0.3, cx, cy, baseR * 2.2); glowGrad.addColorStop(0, `rgba(52,211,153,${0.18 * breath})`); glowGrad.addColorStop(0.5, `rgba(232,121,249,${0.1 * breath})`); glowGrad.addColorStop(1, "rgba(0,0,0,0)"); ctx.fillStyle = glowGrad; ctx.fillRect(0, 0, w, h); // === 3. 进度填充环(背景 + 进度)=== ctx.lineWidth = 2.5; ctx.strokeStyle = "rgba(255,255,255,0.06)"; ctx.beginPath(); ctx.arc(cx, cy, baseR * 1.45, 0, Math.PI * 2); ctx.stroke(); const fp = Math.min(100, crystalsRef.current / Math.max(1, crystalCapRef.current) * 100); fillPctRef.current = fp; const ringR = baseR * 1.45; const grad = ctx.createLinearGradient(cx - ringR, cy - ringR, cx + ringR, cy + ringR); grad.addColorStop(0, COLORS.emerald); grad.addColorStop(0.5, COLORS.fuchsia); grad.addColorStop(1, COLORS.rose); ctx.strokeStyle = grad; ctx.lineWidth = 3; ctx.lineCap = "round"; ctx.shadowBlur = 8; ctx.shadowColor = COLORS.emerald; ctx.beginPath(); ctx.arc(cx, cy, ringR, -Math.PI / 2, -Math.PI / 2 + Math.PI * 2 * fp / 100); ctx.stroke(); ctx.shadowBlur = 0; // === 4. 环绕能量粒子 === energyParticlesRef.current.forEach({ "CrystalOrb.useEffect.draw": (p)=>{ p.angle += p.speed * dt; // 回弹到 baseRadius p.radius += (p.baseRadius - p.radius) * Math.min(1, dt * 4); const px = cx + Math.cos(p.angle) * p.radius; const py = cy + Math.sin(p.angle) * p.radius; const flicker = 0.7 + 0.3 * Math.sin(now * 0.005 + p.phase); ctx.globalAlpha = p.alpha * flicker; ctx.fillStyle = p.color; ctx.shadowBlur = 10; ctx.shadowColor = p.color; ctx.beginPath(); ctx.arc(px, py, p.size, 0, Math.PI * 2); ctx.fill(); // 拖尾(向心方向的小线段) ctx.globalAlpha = p.alpha * flicker * 0.4; ctx.strokeStyle = p.color; ctx.lineWidth = p.size * 0.6; ctx.beginPath(); ctx.moveTo(px, py); ctx.lineTo(cx + Math.cos(p.angle - p.speed * 0.08) * (p.radius - 2), cy + Math.sin(p.angle - p.speed * 0.08) * (p.radius - 2)); ctx.stroke(); } }["CrystalOrb.useEffect.draw"]); ctx.globalAlpha = 1; ctx.shadowBlur = 0; // === 5. 中央晶核 === const coreR = baseR * 0.95; // 鼠标接近时晶核轻微偏移(视差感) let coreOffsetX = 0; let coreOffsetY = 0; if (mouseRef.current.inside) { const dx = mouseRef.current.x - cx; const dy = mouseRef.current.y - cy; const dist = Math.hypot(dx, dy); if (dist > 0.1) { coreOffsetX = dx / dist * Math.min(8, dist * 0.05); coreOffsetY = dy / dist * Math.min(8, dist * 0.05); } } const ccx = cx + coreOffsetX; const ccy = cy + coreOffsetY; // 晶核主体(径向渐变) const coreGrad = ctx.createRadialGradient(ccx - coreR * 0.25, ccy - coreR * 0.3, coreR * 0.1, ccx, ccy, coreR); coreGrad.addColorStop(0, "rgba(255,255,255,0.95)"); coreGrad.addColorStop(0.3, `rgba(52,211,153,${0.85 * breath})`); coreGrad.addColorStop(0.65, "rgba(232,121,249,0.55)"); coreGrad.addColorStop(1, "rgba(251,113,133,0.2)"); ctx.fillStyle = coreGrad; ctx.shadowBlur = 30; ctx.shadowColor = COLORS.emerald; ctx.beginPath(); ctx.arc(ccx, ccy, coreR, 0, Math.PI * 2); ctx.fill(); // 晶核内部六边形纹理 ctx.save(); ctx.translate(ccx, ccy); ctx.globalAlpha = 0.25; ctx.strokeStyle = "rgba(255,255,255,0.6)"; ctx.lineWidth = 0.8; const hexR = coreR * 0.7; for(let layer = 0; layer < 3; layer++){ const r = hexR * (1 - layer * 0.3); ctx.beginPath(); for(let i = 0; i < 6; i++){ const a = Math.PI / 3 * i + now * 0.0002 * (layer % 2 ? 1 : -1); const px = Math.cos(a) * r; const py = Math.sin(a) * r; if (i === 0) ctx.moveTo(px, py); else ctx.lineTo(px, py); } ctx.closePath(); ctx.stroke(); } ctx.restore(); // 高光 ctx.globalAlpha = 0.4; ctx.fillStyle = "#ffffff"; ctx.beginPath(); ctx.ellipse(ccx - coreR * 0.25, ccy - coreR * 0.35, coreR * 0.35, coreR * 0.18, -0.4, 0, Math.PI * 2); ctx.fill(); ctx.globalAlpha = 1; ctx.shadowBlur = 0; // === 6. 冲击波环 === shockRingsRef.current = shockRingsRef.current.filter({ "CrystalOrb.useEffect.draw": (ring)=>{ const elapsed = now - ring.born; if (elapsed < 0 || elapsed > ring.duration) return elapsed <= ring.duration + 50; const t = elapsed / ring.duration; const r = ring.maxRadius * t; const alpha = (1 - t) * 0.8; ctx.globalAlpha = alpha; ctx.strokeStyle = ring.color; ctx.lineWidth = 2.5 * (1 - t * 0.5); ctx.shadowBlur = 12; ctx.shadowColor = ring.color; ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI * 2); ctx.stroke(); ctx.shadowBlur = 0; return true; } }["CrystalOrb.useEffect.draw"]); shockRingsRef.current = shockRingsRef.current.filter({ "CrystalOrb.useEffect.draw": (r)=>now - r.born < r.duration }["CrystalOrb.useEffect.draw"]); ctx.globalAlpha = 1; // === 7. 爆发粒子 === burstParticlesRef.current = burstParticlesRef.current.filter({ "CrystalOrb.useEffect.draw": (p)=>{ const age = now - p.born; if (age > p.life) return false; p.x += p.vx * dt; p.y += p.vy * dt; p.vx *= 0.96; p.vy *= 0.96; const t = age / p.life; const alpha = 1 - t; ctx.globalAlpha = alpha; ctx.fillStyle = p.color; ctx.shadowBlur = 8; ctx.shadowColor = p.color; ctx.beginPath(); ctx.arc(p.x, p.y, p.size * (1 - t * 0.5), 0, Math.PI * 2); ctx.fill(); return true; } }["CrystalOrb.useEffect.draw"]); ctx.globalAlpha = 1; ctx.shadowBlur = 0; rafId = requestAnimationFrame(draw); } }["CrystalOrb.useEffect.draw"]; rafId = requestAnimationFrame(draw); return ({ "CrystalOrb.useEffect": ()=>{ cancelAnimationFrame(rafId); ro.disconnect(); } })["CrystalOrb.useEffect"]; } }["CrystalOrb.useEffect"], [ initParticles ]); // ===== 鼠标追踪(视差)===== const handleMouseMove = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "CrystalOrb.useCallback[handleMouseMove]": (e)=>{ const rect = e.currentTarget.getBoundingClientRect(); mouseRef.current = { x: e.clientX - rect.left, y: e.clientY - rect.top, inside: true }; } }["CrystalOrb.useCallback[handleMouseMove]"], []); const handleMouseLeave = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "CrystalOrb.useCallback[handleMouseLeave]": ()=>{ mouseRef.current.inside = false; } }["CrystalOrb.useCallback[handleMouseLeave]"], []); // 进度比例(用于显示) const fillPct = Math.min(100, crystals / Math.max(1, crystalCap) * 100); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "relative flex flex-col items-center justify-center gap-4 select-none", children: [ combo > 1 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "absolute -top-2 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-rose-500/20 border border-rose-400/40 text-rose-200 text-xs font-mono animate-pulse z-10", children: [ "×", combo, " 连击" ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 557, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: handleClick, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, "aria-label": "脉冲扫描,获取记忆晶体", className: "jsx-dda3ce20a1930cc3" + " " + "relative h-52 w-52 sm:h-64 sm:w-64 rounded-full focus:outline-none group", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { ref: containerRef, className: "jsx-dda3ce20a1930cc3" + " " + "absolute inset-0 rounded-full overflow-hidden", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("canvas", { ref: canvasRef, className: "jsx-dda3ce20a1930cc3" + " " + "block w-full h-full" }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 574, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 570, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { animation: "echo-spin 18s linear infinite" }, className: "jsx-dda3ce20a1930cc3" + " " + "absolute inset-2 rounded-full border border-emerald-400/30 pointer-events-none", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-emerald-300 shadow-[0_0_8px_#34d399]" }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 582, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "absolute bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2 h-1.5 w-1.5 rounded-full bg-rose-300 shadow-[0_0_8px_#fb7185]" }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 583, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 578, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { animation: "echo-spin 24s linear infinite reverse" }, className: "jsx-dda3ce20a1930cc3" + " " + "absolute inset-6 rounded-full border border-fuchsia-400/20 border-dashed pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 586, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { animation: "echo-ring 0.7s ease-out forwards" }, className: "jsx-dda3ce20a1930cc3" + " " + "absolute inset-8 rounded-full border-2 border-emerald-400/60 pointer-events-none" }, `ring-${pulseAnim}`, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 592, columnNumber: 9 }, this), floats.map((f)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { left: f.x, top: f.y, color: f.color, transform: "translate(-50%, -50%)", animation: "echo-float 0.9s ease-out forwards", textShadow: `0 0 8px ${f.color}` }, className: "jsx-dda3ce20a1930cc3" + " " + "absolute pointer-events-none font-mono font-bold text-sm z-10", children: f.text }, f.id, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 600, columnNumber: 11 }, this)) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 562, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "text-center", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { textShadow: "0 0 12px rgba(52,211,153,0.5)" }, className: "jsx-dda3ce20a1930cc3" + " " + "text-2xl font-mono font-bold text-emerald-300", children: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(crystals) }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 619, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "text-xs text-muted-foreground mt-0.5", children: [ "记忆晶体 · ", crystalsPerSec.toFixed(1), "/s · 上限", " ", (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(crystalCap) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 625, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "text-[11px] text-muted-foreground/70 mt-2", children: [ "点击晶体发起", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-dda3ce20a1930cc3" + " " + "text-emerald-300", children: "脉冲扫描" }, void 0, false, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 631, columnNumber: 11 }, this), ",连击叠加加成" ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 629, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-dda3ce20a1930cc3" + " " + "text-[10px] text-muted-foreground/50 mt-1 tabular-nums", children: [ "仓库 ", fillPct.toFixed(1), "% · 连击 ×", Math.max(1, combo) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 633, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 618, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "dda3ce20a1930cc3", children: "@keyframes echo-spin{to{transform:rotate(360deg)}}@keyframes echo-float{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-180%)scale(1.3)}}@keyframes echo-ring{0%{opacity:.8;transform:scale(.8)}to{opacity:0;transform:scale(1.6)}}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/CrystalOrb.tsx", lineNumber: 554, columnNumber: 5 }, this); } _s(CrystalOrb, "ZGgMlgi4oltvIiYOrQuBUUAmXyg=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = CrystalOrb; var _c; __turbopack_context__.k.register(_c, "CrystalOrb"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/button.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Button", ()=>Button, "buttonVariants", ()=>buttonVariants ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/class-variance-authority/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); ; ; ; ; const buttonVariants = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$class$2d$variance$2d$authority$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cva"])("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90", destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50", secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50", link: "text-primary underline-offset-4 hover:underline" }, size: { default: "h-9 px-4 py-2 has-[>svg]:px-3", sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5", lg: "h-10 rounded-md px-6 has-[>svg]:px-4", icon: "size-9" } }, defaultVariants: { variant: "default", size: "default" } }); function Button({ className, variant, size, asChild = false, ...props }) { const Comp = asChild ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Slot"] : "button"; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Comp, { "data-slot": "button", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])(buttonVariants({ variant, size, className })), ...props }, void 0, false, { fileName: "[project]/src/components/ui/button.tsx", lineNumber: 51, columnNumber: 5 }, this); } _c = Button; ; var _c; __turbopack_context__.k.register(_c, "Button"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/DecodeArray.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "DecodeArray", ()=>DecodeArray, "DecodePanel", ()=>DecodePanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 解码共振谜题(核心原创玩法) // // 谐振序列:按目标颜色顺序点击四邻接节点,重建回路。 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$decode$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/decode.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/check.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$undo$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Undo2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/undo-2.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$triangle$2d$alert$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__AlertTriangle$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/triangle-alert.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; ; function DecodeArray() { _s(); const activePuzzle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodeArray.useGameStore[activePuzzle]": (s)=>s.activePuzzle }["DecodeArray.useGameStore[activePuzzle]"]); const clickNode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodeArray.useGameStore[clickNode]": (s)=>s.clickNode }["DecodeArray.useGameStore[clickNode]"]); const undoStep = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodeArray.useGameStore[undoStep]": (s)=>s.undoStep }["DecodeArray.useGameStore[undoStep]"]); const retryPuzzle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodeArray.useGameStore[retryPuzzle]": (s)=>s.retryPuzzle }["DecodeArray.useGameStore[retryPuzzle]"]); const abandonPuzzle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodeArray.useGameStore[abandonPuzzle]": (s)=>s.abandonPuzzle }["DecodeArray.useGameStore[abandonPuzzle]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [hoverId, setHoverId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [flash, setFlash] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [warned, setWarned] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); if (!activePuzzle) return null; const { grid, rows, cols, target, path, stepLimit, tier } = activePuzzle; const currentTargetIdx = path.length; const currentColor = target[currentTargetIdx]; // 当前局面是否仍可解(精确判定) const stuck = path.length > 0 && path.length < target.length && !(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$decode$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isSolvable"])(activePuzzle); const handleNodeClick = (node)=>{ const res = clickNode(node.id); if (res.ok && res.finished) { setWarned(false); (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("decodeSuccess"); if (res.failReason) { const ids = res.failReason.split(",").filter(Boolean); if (ids.length) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("fragmentUnlock"); toast({ title: "✦ 记忆碎片浮现", description: "新的回响被拼入图谱,前往「记忆图谱」查看。" }); } } toast({ title: "谐振闭合!", description: "晶体解码成功,记忆已释放。" }); return; } if (!res.ok) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("decodeFail"); setFlash({ id: node.id, ok: false }); setTimeout(()=>setFlash(null), 280); } else { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("decodeClick", { color: node.color }); setFlash({ id: node.id, ok: true }); setTimeout(()=>setFlash(null), 280); // 点击后若不可解,提示玩家撤销 if (res.solvable === false && !warned) { setWarned(true); toast({ title: "谐振受阻", description: "此路不通,建议撤销上一步或重排。" }); } if (res.solvable === true) setWarned(false); } }; const handleUndo = ()=>{ undoStep(); setWarned(false); setFlash(null); }; const handleRetry = ()=>{ retryPuzzle(); setWarned(false); setFlash(null); }; // 计算节点位置(百分比) const cellW = 100 / cols; const cellH = 100 / rows; // 路径线段 const pathNodes = path.map((id)=>grid.find((n)=>n.id === id)).filter(Boolean); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex flex-col gap-4 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex items-center justify-center gap-2 flex-wrap", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-xs text-muted-foreground mr-1", children: "目标谐振" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 101, columnNumber: 9 }, this), target.map((c, i)=>{ const done = i < currentTargetIdx; const active = i === currentTargetIdx; const v = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["COLOR_VISUAL"][c]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: `radial-gradient(circle at 35% 30%, ${v.hex}, ${v.hex}aa 60%, ${v.hex}44)`, boxShadow: active ? `0 0 18px ${v.glow}, 0 0 36px ${v.glow}` : `0 0 8px ${v.glow}`, ["--tw-ring-color"]: v.hex }, className: "jsx-35ab0418fdc54847" + " " + `relative h-9 w-9 rounded-full flex items-center justify-center transition-all duration-300 ${done ? "opacity-30 scale-90" : ""} ${active ? "scale-125 ring-2 ring-offset-2 ring-offset-background" : ""}`, children: [ done && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], { className: "h-4 w-4 text-white" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 120, columnNumber: 24 }, this), active && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: v.hex }, className: "jsx-35ab0418fdc54847" + " " + "absolute -bottom-5 text-[10px] font-medium", children: "下一个" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 122, columnNumber: 17 }, this) ] }, i, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 107, columnNumber: 13 }, this); }) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 100, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "relative flex-1 min-h-[260px] rounded-2xl border border-white/10 bg-black/30 backdrop-blur-sm overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { backgroundImage: "linear-gradient(rgba(255,255,255,0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.08) 1px, transparent 1px)", backgroundSize: `${cellW}% ${cellH}%` }, className: "jsx-35ab0418fdc54847" + " " + "absolute inset-0 opacity-20" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 137, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("svg", { className: "jsx-35ab0418fdc54847" + " " + "absolute inset-0 w-full h-full pointer-events-none", children: pathNodes.map((n, i)=>{ if (i === 0) return null; const prev = pathNodes[i - 1]; const x1 = (prev.col + 0.5) * cellW; const y1 = (prev.row + 0.5) * cellH; const x2 = (n.col + 0.5) * cellW; const y2 = (n.row + 0.5) * cellH; const v = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["COLOR_VISUAL"][n.color]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("line", { x1: `${x1}%`, y1: `${y1}%`, x2: `${x2}%`, y2: `${y2}%`, stroke: v.hex, strokeWidth: 2.5, strokeLinecap: "round", style: { filter: `drop-shadow(0 0 4px ${v.glow})` }, className: "jsx-35ab0418fdc54847" + " " + "echo-path-line" }, i, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 156, columnNumber: 15 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 146, columnNumber: 9 }, this), grid.map((node)=>{ const v = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["COLOR_VISUAL"][node.color]; const used = node.used; const isCurrentTarget = currentColor !== undefined && node.color === currentColor && !used; // 选起点阶段:标记「可行起点」(选了之后仍可解),避免玩家踩死起点 const isViableStart = path.length === 0 && isCurrentTarget && (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$decode$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["canStartFrom"])(activePuzzle, node.id); // 选起点阶段:是目标色但选了会死局的起点(淡化提示) const isDeadStart = path.length === 0 && isCurrentTarget && !isViableStart; const isHover = hoverId === node.id; const isFlash = flash?.id === node.id; const cx = (node.col + 0.5) * cellW; const cy = (node.row + 0.5) * cellH; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: ()=>handleNodeClick(node), onMouseEnter: ()=>setHoverId(node.id), onMouseLeave: ()=>setHoverId(null), disabled: used, style: { left: `${cx}%`, top: `${cy}%`, width: `min(${100 / cols * 0.62}%, 56px)`, aspectRatio: "1", background: used ? "rgba(255,255,255,0.04)" : `radial-gradient(circle at 35% 30%, ${v.hex}, ${v.hex}cc 55%, ${v.hex}55)`, boxShadow: used ? "inset 0 0 12px rgba(0,0,0,0.5)" : isViableStart ? `0 0 16px ${v.glow}, 0 0 32px ${v.glow}, inset 0 0 10px rgba(255,255,255,0.5)` : isCurrentTarget ? `0 0 10px ${v.glow}, 0 0 20px ${v.glow}, inset 0 0 6px rgba(255,255,255,0.3)` : `0 0 6px ${v.glow}`, border: isViableStart ? `2px solid ${v.hex}` : isCurrentTarget ? `1.5px solid ${v.hex}aa` : "1px solid rgba(255,255,255,0.12)", opacity: used ? 0.35 : isDeadStart ? 0.5 : 1, // 统一用 inline transform 定位居中 + 缩放,避免与 Tailwind translate 冲突导致左上偏移 transform: `translate(-50%, -50%) scale(${isHover && !used ? 1.12 : isFlash ? flash?.ok ? 1.25 : 0.8 : 1})`, animation: isViableStart ? "echo-pulse 1.2s ease-in-out infinite" : isCurrentTarget && !isDeadStart ? "echo-pulse 1.6s ease-in-out infinite" : undefined }, "aria-label": `${v.label}色节点 ${node.row + 1}-${node.col + 1}`, className: "jsx-35ab0418fdc54847" + " " + "absolute rounded-full transition-[box-shadow,background,border,opacity] duration-200 focus:outline-none disabled:cursor-not-allowed", children: !used && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: "radial-gradient(circle at 35% 30%, rgba(255,255,255,0.5), transparent 45%)" }, className: "jsx-35ab0418fdc54847" + " " + "absolute inset-0 rounded-full" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 230, columnNumber: 17 }, this) }, node.id, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 189, columnNumber: 13 }, this); }) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 135, columnNumber: 7 }, this), stuck && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex items-center gap-2 px-3 py-2 rounded-lg border border-rose-400/40 bg-rose-950/40 text-rose-200 text-xs animate-pulse", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$triangle$2d$alert$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__AlertTriangle$3e$__["AlertTriangle"], { className: "h-3.5 w-3.5 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 246, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847", children: "谐振受阻,此路已无解。" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 247, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "outline", onClick: handleUndo, className: "h-6 px-2 ml-auto border-rose-400/50 text-rose-100 hover:bg-rose-500/20 text-[11px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$undo$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Undo2$3e$__["Undo2"], { className: "h-3 w-3 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 254, columnNumber: 13 }, this), "撤销" ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 248, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 245, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex items-center justify-between gap-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex items-center gap-2 text-xs", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-muted-foreground", children: "步数" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 263, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + `font-mono font-semibold ${path.length >= stepLimit ? "text-rose-400" : "text-foreground"}`, children: [ path.length, " / ", stepLimit ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 264, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "ml-2 text-muted-foreground", children: [ "T", tier ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 271, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 262, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-35ab0418fdc54847" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", size: "sm", onClick: handleUndo, disabled: path.length === 0, className: "h-7", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$undo$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Undo2$3e$__["Undo2"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 281, columnNumber: 13 }, this), "撤销" ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 274, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", size: "sm", onClick: handleRetry, className: "h-7", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__["RotateCcw"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 290, columnNumber: 13 }, this), "重排" ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 284, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", size: "sm", onClick: ()=>{ abandonPuzzle(); setFlash(null); setWarned(false); }, className: "h-7", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__["X"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 303, columnNumber: 13 }, this), "放回" ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 293, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 273, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 261, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-35ab0418fdc54847" + " " + "text-[11px] text-muted-foreground/80 text-center leading-relaxed", children: path.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ "点击", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-emerald-300", children: "高亮" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 312, columnNumber: 17 }, this), "的可行起点开始,按目标顺序走", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-emerald-300", children: "相邻同色" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 312, columnNumber: 75 }, this), "节点;走错可", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-rose-300", children: "撤销" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 312, columnNumber: 127 }, this), "。" ] }, void 0, true) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ "按「目标谐振」顺序,点击", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-emerald-300", children: "上下左右相邻" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 313, columnNumber: 27 }, this), "的同色节点。每个节点仅可使用一次;走错可", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-35ab0418fdc54847" + " " + "text-rose-300", children: "撤销" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 313, columnNumber: 95 }, this), "。" ] }, void 0, true) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 310, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "35ab0418fdc54847", children: "@keyframes echo-pulse{0%,to{filter:brightness()}50%{filter:brightness(1.4)}}@keyframes echo-line{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0}}.echo-path-line{stroke-dasharray:100;animation:.4s ease-out forwards echo-line}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 98, columnNumber: 5 }, this); } _s(DecodeArray, "DQb1xRQVKNqdpnDRQy3QaTWVOiY=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = DecodeArray; function DecodePanel() { _s1(); const activePuzzle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[activePuzzle]": (s)=>s.activePuzzle }["DecodePanel.useGameStore[activePuzzle]"]); const pendingCrystals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[pendingCrystals]": (s)=>s.pendingCrystals }["DecodePanel.useGameStore[pendingCrystals]"]); const startDecode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[startDecode]": (s)=>s.startDecode }["DecodePanel.useGameStore[startDecode]"]); const crystalsPerSec = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[crystalsPerSec]": (s)=>s.crystalsPerSec }["DecodePanel.useGameStore[crystalsPerSec]"]); const crystalCap = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[crystalCap]": (s)=>s.crystalCap }["DecodePanel.useGameStore[crystalCap]"]); const crystals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "DecodePanel.useGameStore[crystals]": (s)=>s.crystals }["DecodePanel.useGameStore[crystals]"]); if (activePuzzle) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-full flex flex-col", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2 mb-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-4 w-4 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 347, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "text-sm font-semibold", children: "解码共振阵列" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 348, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 346, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 min-h-0", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DecodeArray, {}, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 351, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 350, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 345, columnNumber: 7 }, this); } // 无活跃谜题:展示待解码晶体队列 return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "h-full flex flex-col", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "flex items-center gap-2 mb-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-4 w-4 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 361, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "jsx-53059b9e32765d5f" + " " + "text-sm font-semibold", children: "待解码晶体" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 362, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-53059b9e32765d5f" + " " + "text-xs text-muted-foreground ml-auto", children: [ "产能 ", crystalsPerSec.toFixed(1), "/s · ", Math.floor(crystals), "/", Math.floor(crystalCap) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 363, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 360, columnNumber: 7 }, this), pendingCrystals.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "flex-1 flex flex-col items-center justify-center text-center gap-3 rounded-2xl border border-dashed border-white/10 bg-black/20 p-6", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "relative h-16 w-16", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "absolute inset-0 rounded-full bg-rose-500/20 blur-xl animate-pulse" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 371, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "absolute inset-2 rounded-full border-2 border-rose-400/40 rotate-45" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 372, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "absolute inset-4 rounded-full bg-rose-500/30" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 373, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 370, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-53059b9e32765d5f" + " " + "text-sm text-muted-foreground", children: "晶体正在生成中…" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 375, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-53059b9e32765d5f" + " " + "text-xs text-muted-foreground/70 max-w-[220px]", children: "自治无人机每数秒回收一颗记忆晶体,点击下方晶体开启解码。" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 378, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 369, columnNumber: 9 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-53059b9e32765d5f" + " " + "flex-1 grid grid-cols-2 sm:grid-cols-3 gap-3 content-start max-h-[420px] overflow-y-auto echo-scroll pr-1", children: pendingCrystals.map((c)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(CrystalCard, { crystal: c, onClick: ()=>startDecode(c.id) }, c.id, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 385, columnNumber: 13 }, this)) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 383, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "53059b9e32765d5f", children: ".echo-scroll::-webkit-scrollbar{width:6px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 359, columnNumber: 5 }, this); } _s1(DecodePanel, "HSEa0JoWzN+r2cLAwkGbCXkSxdw=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c1 = DecodePanel; function CrystalCard({ crystal, onClick }) { const tierColor = crystal.tier === 1 ? "#34d399" : crystal.tier === 2 ? "#fbbf24" : "#e879f9"; const tierLabel = crystal.tier === 1 ? "常见" : crystal.tier === 2 ? "稀有" : "史诗"; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: onClick, className: "group relative aspect-square rounded-2xl border border-white/10 bg-black/40 hover:border-white/40 transition-all duration-300 hover:scale-[1.04] focus:outline-none overflow-hidden", style: { boxShadow: `inset 0 0 24px ${tierColor}22` }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-0 rounded-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-300 pointer-events-none", style: { background: `linear-gradient(120deg, transparent 30%, ${tierColor}40 50%, transparent 70%)`, backgroundSize: "200% 100%", animation: "echo-border-flow 2s linear infinite", mixBlendMode: "screen" } }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 415, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none overflow-hidden", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-x-0 h-px", style: { background: `linear-gradient(90deg, transparent, ${tierColor}, transparent)`, animation: "echo-scan 1.8s ease-in-out infinite" } }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 426, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 425, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-0 flex items-center justify-center", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative h-12 w-12 transition-transform duration-500 group-hover:rotate-[200deg] group-hover:scale-110", style: { filter: `drop-shadow(0 0 12px ${tierColor}88)` }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-0 rotate-45 rounded-md", style: { background: `linear-gradient(135deg, ${tierColor}, ${tierColor}66)`, border: `1px solid ${tierColor}` } }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 440, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-2 rotate-45 rounded-sm", style: { background: `linear-gradient(135deg, rgba(255,255,255,0.5), transparent)` } }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 447, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 436, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 435, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute top-1.5 left-1.5 z-10 text-[10px] font-mono font-semibold px-1.5 py-0.5 rounded bg-black/60 backdrop-blur-sm border", style: { color: tierColor, borderColor: `${tierColor}40` }, children: [ "T", crystal.tier ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 454, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute top-1.5 right-1.5 z-10 text-[9px] text-white/60 font-mono tracking-wider", children: tierLabel }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 460, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-x-0 bottom-0 z-10 bg-gradient-to-t from-black/85 via-black/50 to-transparent pt-4 pb-1.5 px-1 text-center opacity-0 group-hover:opacity-100 transition-opacity duration-200", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[12px] font-mono font-bold leading-none", style: { color: tierColor }, children: [ "+", crystal.value ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 465, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[8px] text-white/60 uppercase tracking-[0.15em] mt-0.5", children: "解码 →" }, void 0, false, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 468, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 464, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/DecodeArray.tsx", lineNumber: 409, columnNumber: 5 }, this); } _c2 = CrystalCard; var _c, _c1, _c2; __turbopack_context__.k.register(_c, "DecodeArray"); __turbopack_context__.k.register(_c1, "DecodePanel"); __turbopack_context__.k.register(_c2, "CrystalCard"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/card.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Card", ()=>Card, "CardAction", ()=>CardAction, "CardContent", ()=>CardContent, "CardDescription", ()=>CardDescription, "CardFooter", ()=>CardFooter, "CardHeader", ()=>CardHeader, "CardTitle", ()=>CardTitle ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); ; ; function Card({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 7, columnNumber: 5 }, this); } _c = Card; function CardHeader({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-header", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 20, columnNumber: 5 }, this); } _c1 = CardHeader; function CardTitle({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-title", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("leading-none font-semibold", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 33, columnNumber: 5 }, this); } _c2 = CardTitle; function CardDescription({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-description", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("text-muted-foreground text-sm", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 43, columnNumber: 5 }, this); } _c3 = CardDescription; function CardAction({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-action", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 53, columnNumber: 5 }, this); } _c4 = CardAction; function CardContent({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-content", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("px-6", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 66, columnNumber: 5 }, this); } _c5 = CardContent; function CardFooter({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "card-footer", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex items-center px-6 [.border-t]:pt-6", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/card.tsx", lineNumber: 76, columnNumber: 5 }, this); } _c6 = CardFooter; ; var _c, _c1, _c2, _c3, _c4, _c5, _c6; __turbopack_context__.k.register(_c, "Card"); __turbopack_context__.k.register(_c1, "CardHeader"); __turbopack_context__.k.register(_c2, "CardTitle"); __turbopack_context__.k.register(_c3, "CardDescription"); __turbopack_context__.k.register(_c4, "CardAction"); __turbopack_context__.k.register(_c5, "CardContent"); __turbopack_context__.k.register(_c6, "CardFooter"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/TechTree.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "TechTree", ()=>TechTree ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 技术树 var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/narrative.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/card.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$pickaxe$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Pickaxe$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/pickaxe.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$scan$2d$line$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ScanLine$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/scan-line.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rocket.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/book-open.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/check.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/lock.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; const ICONS = { Pickaxe: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$pickaxe$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Pickaxe$3e$__["Pickaxe"], ScanLine: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$scan$2d$line$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ScanLine$3e$__["ScanLine"], Rocket: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], BookOpen: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"] }; const BRANCH_COLOR = { mining: "#34d399", decoding: "#fb7185", expedition: "#fbbf24", narrative: "#e879f9" }; function TechTree() { _s(); const tech = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TechTree.useGameStore[tech]": (s)=>s.tech }["TechTree.useGameStore[tech]"]); const insights = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TechTree.useGameStore[insights]": (s)=>s.insights }["TechTree.useGameStore[insights]"]); const buyTech = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TechTree.useGameStore[buyTech]": (s)=>s.buyTech }["TechTree.useGameStore[buyTech]"]); const branches = [ "mining", "decoding", "expedition", "narrative" ]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex flex-col gap-3 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "jsx-fbf3fdae687a84dd" + " " + "text-sm font-semibold", children: "技术树" }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 43, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fbf3fdae687a84dd" + " " + "text-xs text-muted-foreground", children: [ "洞见 ", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fbf3fdae687a84dd" + " " + "text-amber-300 font-mono", children: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(insights) }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 45, columnNumber: 14 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 44, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 42, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex-1 overflow-y-auto echo-scroll pr-1 space-y-3", children: branches.map((b)=>{ const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TECH_BRANCH_META"][b]; const Icon = ICONS[meta.icon]; const color = BRANCH_COLOR[b]; const nodes = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TECH_TREE"].filter((t)=>t.branch === b); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex items-center gap-2 mb-1.5 px-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Icon, { className: "jsx-fbf3fdae687a84dd" + " " + "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 58, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color }, className: "jsx-fbf3fdae687a84dd" + " " + "text-xs font-medium", children: meta.name }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 59, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fbf3fdae687a84dd" + " " + "text-[10px] text-muted-foreground/70 truncate flex-1", children: meta.desc }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 62, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 57, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-fbf3fdae687a84dd" + " " + "text-[9px] italic text-muted-foreground/50 px-1 mb-1.5 truncate", children: [ "「", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$narrative$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TECH_LORE"][b] ?? "", "」" ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 67, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "grid gap-1.5", children: nodes.map((node)=>{ const owned = (tech[node.id] ?? 0) >= 1; const affordable = insights >= node.cost; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Card"], { className: `p-2.5 transition-all duration-200 ${owned ? "bg-white/5 border-white/10" : affordable ? "bg-black/30 border-white/15 hover:border-white/30 cursor-pointer" : "bg-black/20 border-white/5 opacity-60"}`, style: owned ? { boxShadow: `inset 0 0 0 1px ${color}44, 0 0 12px ${color}22` } : undefined, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex-1 min-w-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fbf3fdae687a84dd" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: owned ? color : undefined }, className: "jsx-fbf3fdae687a84dd" + " " + "text-xs font-semibold truncate", children: node.name }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 93, columnNumber: 29 }, this), owned && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], { className: "h-3 w-3", style: { color } }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 100, columnNumber: 31 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 92, columnNumber: 27 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-fbf3fdae687a84dd" + " " + "text-[10px] text-muted-foreground/80 truncate", children: node.desc }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 103, columnNumber: 27 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 91, columnNumber: 25 }, this), !owned && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: affordable ? "default" : "ghost", disabled: !affordable, onClick: ()=>{ if (buyTech(node.id)) (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("techBuy"); }, className: "h-7 px-2 text-[11px] shrink-0", style: affordable ? { background: `${color}22`, border: `1px solid ${color}66`, color } : undefined, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__["Lock"], { className: "h-2.5 w-2.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 126, columnNumber: 29 }, this), node.cost ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 108, columnNumber: 27 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 90, columnNumber: 23 }, this) }, node.id, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 75, columnNumber: 21 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 70, columnNumber: 15 }, this) ] }, b, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 56, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 49, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "fbf3fdae687a84dd", children: ".echo-scroll::-webkit-scrollbar{width:5px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TechTree.tsx", lineNumber: 41, columnNumber: 5 }, this); } _s(TechTree, "Fd+YwuKOI1sOmUu3IEPLYikJnPw=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = TechTree; var _c; __turbopack_context__.k.register(_c, "TechTree"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/scroll-area.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ScrollArea", ()=>ScrollArea, "ScrollBar", ()=>ScrollBar ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-scroll-area/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; function ScrollArea({ className, children, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "scroll-area", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("relative", className), ...props, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Viewport"], { "data-slot": "scroll-area-viewport", className: "focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1", children: children }, void 0, false, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 19, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ScrollBar, {}, void 0, false, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 25, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Corner"], {}, void 0, false, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 26, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 14, columnNumber: 5 }, this); } _c = ScrollArea; function ScrollBar({ className, orientation = "vertical", ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ScrollAreaScrollbar"], { "data-slot": "scroll-area-scrollbar", orientation: orientation, className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex touch-none p-px transition-colors select-none", orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent", orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent", className), ...props, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$scroll$2d$area$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ScrollAreaThumb"], { "data-slot": "scroll-area-thumb", className: "bg-border relative flex-1 rounded-full" }, void 0, false, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 50, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/ui/scroll-area.tsx", lineNumber: 37, columnNumber: 5 }, this); } _c1 = ScrollBar; ; var _c, _c1; __turbopack_context__.k.register(_c, "ScrollArea"); __turbopack_context__.k.register(_c1, "ScrollBar"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/Codex.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Codex", ()=>Codex ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 记忆图谱(碎片叙事) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/card.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$scroll$2d$area$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/scroll-area.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/book-open.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/lock.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; const ERA_NAMES = [ "", "寂灭前夜", "谐振纪", "飞升潮", "回响纪", "接触纪" ]; function Codex() { _s(); const fragments = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "Codex.useGameStore[fragments]": (s)=>s.fragments }["Codex.useGameStore[fragments]"]); const totalDecoded = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "Codex.useGameStore[totalDecoded]": (s)=>s.totalDecoded }["Codex.useGameStore[totalDecoded]"]); const nextThreshold = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["nextFragmentThreshold"])(totalDecoded); const [selected, setSelected] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); // v0.1 只展示第一纪元 const era1 = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FRAGMENTS"].filter((f)=>f.era === 1); const unlockedCount = era1.filter((f)=>fragments[f.id]).length; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col gap-2 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "text-sm font-semibold flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"], { className: "h-4 w-4 text-fuchsia-400" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 27, columnNumber: 11 }, this), "记忆图谱" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 26, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-xs text-muted-foreground", children: [ unlockedCount, "/", era1.length, " · 第一纪元" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 30, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 25, columnNumber: 7 }, this), nextThreshold && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground/80 px-1", children: [ "再解码 ", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-fuchsia-300 font-mono", children: nextThreshold - totalDecoded }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 37, columnNumber: 15 }, this), " 颗 → 下一个碎片" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 36, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$scroll$2d$area$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ScrollArea"], { className: "flex-1 min-h-0", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "grid grid-cols-2 gap-2 pr-2", children: era1.map((f, i)=>{ const unlocked = !!fragments[f.id]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: ()=>unlocked && setSelected(f), disabled: !unlocked, className: `relative aspect-[4/3] rounded-xl border text-left p-2 transition-all duration-300 overflow-hidden ${unlocked ? "border-fuchsia-400/40 bg-gradient-to-br from-fuchsia-950/40 to-black/40 hover:border-fuchsia-400/70 hover:scale-[1.02] cursor-pointer" : "border-white/5 bg-black/30 cursor-not-allowed"}`, style: unlocked ? { boxShadow: "0 0 16px rgba(232,121,249,0.15)" } : undefined, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: `absolute top-1.5 right-1.5 text-[9px] font-mono ${unlocked ? "text-fuchsia-300/70" : "text-white/20"}`, children: String(i + 1).padStart(2, "0") }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 62, columnNumber: 17 }, this), unlocked ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute -top-3 -right-3 h-12 w-12 rounded-full bg-fuchsia-500/20 blur-xl" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 71, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3 w-3 text-fuchsia-300 mb-1" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 72, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[11px] font-semibold text-fuchsia-100 leading-tight", children: f.title }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 73, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[9px] text-muted-foreground mt-1 line-clamp-2", children: [ f.echo.slice(0, 28), "…" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 76, columnNumber: 21 }, this) ] }, void 0, true) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col items-center justify-center h-full gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__["Lock"], { className: "h-4 w-4 text-white/20" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 82, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[9px] text-white/30", children: [ "需解码 ", f.threshold, " 颗" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 83, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 81, columnNumber: 19 }, this) ] }, f.id, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 46, columnNumber: 15 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 42, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 41, columnNumber: 7 }, this), selected && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm", onClick: ()=>setSelected(null), children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$card$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Card"], { className: "max-w-md w-full p-5 bg-gradient-to-br from-fuchsia-950/60 to-black/80 border-fuchsia-400/40", onClick: (e)=>e.stopPropagation(), style: { boxShadow: "0 0 40px rgba(232,121,249,0.25)" }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2 mb-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-4 w-4 text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 106, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] text-fuchsia-300/70 font-mono", children: [ "第 ", selected.era, " 纪元 · ", ERA_NAMES[selected.era] || "" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 107, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 105, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { className: "text-lg font-bold text-fuchsia-100 mb-3", children: selected.title }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 111, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-sm text-foreground/90 leading-relaxed italic", children: [ "「", selected.echo, "」" ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 114, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: ()=>setSelected(null), className: "mt-4 text-xs text-muted-foreground hover:text-foreground transition", children: "关闭" }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 117, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 100, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 96, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/Codex.tsx", lineNumber: 24, columnNumber: 5 }, this); } _s(Codex, "pVJ1pc7dBMtnuMxklosK2w8o6qQ=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = Codex; var _c; __turbopack_context__.k.register(_c, "Codex"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/dialog.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Dialog", ()=>Dialog, "DialogClose", ()=>DialogClose, "DialogContent", ()=>DialogContent, "DialogDescription", ()=>DialogDescription, "DialogFooter", ()=>DialogFooter, "DialogHeader", ()=>DialogHeader, "DialogOverlay", ()=>DialogOverlay, "DialogPortal", ()=>DialogPortal, "DialogTitle", ()=>DialogTitle, "DialogTrigger", ()=>DialogTrigger ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-dialog/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__XIcon$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; ; function Dialog({ ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "dialog", ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 12, columnNumber: 10 }, this); } _c = Dialog; function DialogTrigger({ ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Trigger"], { "data-slot": "dialog-trigger", ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 18, columnNumber: 10 }, this); } _c1 = DialogTrigger; function DialogPortal({ ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Portal"], { "data-slot": "dialog-portal", ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 24, columnNumber: 10 }, this); } _c2 = DialogPortal; function DialogClose({ ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Close"], { "data-slot": "dialog-close", ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 30, columnNumber: 10 }, this); } _c3 = DialogClose; function DialogOverlay({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Overlay"], { "data-slot": "dialog-overlay", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 38, columnNumber: 5 }, this); } _c4 = DialogOverlay; function DialogContent({ className, children, showCloseButton = true, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DialogPortal, { "data-slot": "dialog-portal", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DialogOverlay, {}, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 59, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Content"], { "data-slot": "dialog-content", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className), ...props, children: [ children, showCloseButton && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Close"], { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__XIcon$3e$__["XIcon"], {}, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 74, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "sr-only", children: "Close" }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 75, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 70, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 60, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 58, columnNumber: 5 }, this); } _c5 = DialogContent; function DialogHeader({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "dialog-header", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex flex-col gap-2 text-center sm:text-left", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 85, columnNumber: 5 }, this); } _c6 = DialogHeader; function DialogFooter({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { "data-slot": "dialog-footer", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 95, columnNumber: 5 }, this); } _c7 = DialogFooter; function DialogTitle({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Title"], { "data-slot": "dialog-title", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("text-lg leading-none font-semibold", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 111, columnNumber: 5 }, this); } _c8 = DialogTitle; function DialogDescription({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dialog$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Description"], { "data-slot": "dialog-description", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("text-muted-foreground text-sm", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/dialog.tsx", lineNumber: 124, columnNumber: 5 }, this); } _c9 = DialogDescription; ; var _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9; __turbopack_context__.k.register(_c, "Dialog"); __turbopack_context__.k.register(_c1, "DialogTrigger"); __turbopack_context__.k.register(_c2, "DialogPortal"); __turbopack_context__.k.register(_c3, "DialogClose"); __turbopack_context__.k.register(_c4, "DialogOverlay"); __turbopack_context__.k.register(_c5, "DialogContent"); __turbopack_context__.k.register(_c6, "DialogHeader"); __turbopack_context__.k.register(_c7, "DialogFooter"); __turbopack_context__.k.register(_c8, "DialogTitle"); __turbopack_context__.k.register(_c9, "DialogDescription"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/PrestigeDialog.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "PrestigeDialog", ()=>PrestigeDialog ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 飞升(Prestige)对话框 var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/dialog.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$star$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Star$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/star.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/book-open.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$engine$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/engine.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/constellation.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; ; ; function PrestigeDialog({ open, onOpenChange }) { _s(); const state = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])(); const doPrestige = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "PrestigeDialog.useGameStore[doPrestige]": (s)=>s.doPrestige }["PrestigeDialog.useGameStore[doPrestige]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [confirming, setConfirming] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [canReconfirm, setCanReconfirm] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const newBp = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$engine$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["computeNewBlueprints"])(state); const bonus = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$engine$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["computePrestigeBonus"])(state); const totalBpAfter = Math.min(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].maxBlueprints, state.blueprints.length + newBp); const cProgress = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["constellationProgress"])(state.constellation ?? []); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Dialog"], { open: open, onOpenChange: onOpenChange, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogContent"], { className: "bg-gradient-to-br from-fuchsia-950/70 to-black/90 border-fuchsia-400/40", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogHeader"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogTitle"], { className: "flex items-center gap-2 text-fuchsia-100", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__["RotateCcw"], { className: "h-5 w-5" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 44, columnNumber: 13 }, this), "飞升 · 跨越维度" ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 43, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogDescription"], { className: "text-fuchsia-200/70", children: "当接触进度满溢,你将跨越维度与以太族相会。本次飞升将重置资源与技术,但保留记忆图谱与蓝图加成。" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 47, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 42, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "space-y-3 py-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border border-fuchsia-400/30 bg-fuchsia-950/30 p-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-sm text-fuchsia-200", children: "本次获得蓝图" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 56, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-2xl font-mono font-bold text-fuchsia-100", children: [ "+", newBp ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 57, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 55, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-muted-foreground mt-1", children: [ "蓝图总数将达 ", totalBpAfter, "/", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].maxBlueprints, "(每 ", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].blueprintsPerDecode, " 次解码产出 1 张)" ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 61, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 54, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "grid grid-cols-3 gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(BonusCard, { label: "产能", value: `+${(totalBpAfter * __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].perBlueprint.crystalsPerSecMult * 100).toFixed(0)}%`, color: "#34d399" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 68, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(BonusCard, { label: "洞见", value: `+${(totalBpAfter * __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].perBlueprint.insightMult * 100).toFixed(0)}%`, color: "#fbbf24" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 73, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(BonusCard, { label: "接触", value: `+${(totalBpAfter * __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["PRESTIGE"].perBlueprint.contactRateMult * 100).toFixed(0)}%`, color: "#e879f9" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 78, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 67, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[11px] text-muted-foreground space-y-1 pt-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3 w-3 text-fuchsia-400" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 88, columnNumber: 15 }, this), "保留:记忆图谱、累计解码数、飞升次数、蓝图、星图天赋" ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 87, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rotate$2d$ccw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RotateCcw$3e$__["RotateCcw"], { className: "h-3 w-3 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 92, columnNumber: 15 }, this), "重置:晶体、洞见、技术树、接触进度、待解码晶体" ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 91, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 86, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border border-fuchsia-400/30 bg-gradient-to-r from-fuchsia-950/40 to-purple-950/40 p-2.5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$star$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Star$3e$__["Star"], { className: "h-4 w-4 text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 100, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[12px] text-fuchsia-200 font-bold", children: "星图觉醒预告" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 102, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground", children: [ "飞升后将从 3 道随机天赋中选 1,永久获得加成", cProgress.unlocked < cProgress.total && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-fuchsia-300/80", children: [ " · 当前 ", cProgress.unlocked, "/", cProgress.total ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 106, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 103, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 101, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-fuchsia-300/70 font-mono", children: cProgress.unlocked < cProgress.total ? "✦ 可觉醒" : "✧ 已圆满" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 110, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 99, columnNumber: 13 }, this) }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 98, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border border-violet-400/25 bg-violet-950/20 p-2.5 flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"], { className: "h-4 w-4 text-violet-300 flex-shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 118, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 text-[10px] text-violet-100/70 leading-relaxed", children: [ "本次飞升将铭刻入", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-violet-200 font-bold", children: "回响编年史" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 120, columnNumber: 23 }, this), ", 记录本周目的解码、探险、星潮与觉醒天赋,形成永恒叙事时间轴。" ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 119, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 117, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 52, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogFooter"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", onClick: ()=>onOpenChange(false), children: "取消" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 127, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { disabled: confirming && !canReconfirm, onClick: ()=>{ if (!confirming) { setConfirming(true); setCanReconfirm(false); window.setTimeout(()=>setCanReconfirm(true), 900); return; } const res = doPrestige(); onOpenChange(false); setConfirming(false); setCanReconfirm(false); if (res) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("prestige"); // 编年史铭刻音效(稍延迟,与飞升音分层) window.setTimeout(()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("chronicle"), 600); toast({ title: "✦ 飞升成功", description: `获得 ${res.newBp} 张蓝图,进入第 ${state.ascensions + 2} 周目。编年史已铭刻新纪元。` }); } }, className: "bg-gradient-to-r from-fuchsia-600 to-rose-500 hover:from-fuchsia-500 hover:to-rose-400 text-white border-0", children: confirming ? canReconfirm ? "再次确认飞升" : "请确认…" : newBp <= 0 ? "飞升(无新蓝图)" : "飞升" }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 130, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 126, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 41, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 40, columnNumber: 5 }, this); } _s(PrestigeDialog, "fpgVc8aKBfhhkw1D6pIu2jTtEKY=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = PrestigeDialog; function BonusCard({ label, value, color }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border p-2 text-center", style: { borderColor: `${color}44`, background: `${color}11` }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground", children: label }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 183, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-sm font-mono font-bold", style: { color }, children: value }, void 0, false, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 184, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/PrestigeDialog.tsx", lineNumber: 179, columnNumber: 5 }, this); } _c1 = BonusCard; var _c, _c1; __turbopack_context__.k.register(_c, "PrestigeDialog"); __turbopack_context__.k.register(_c1, "BonusCard"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/switch.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Switch", ()=>Switch ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$switch$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-switch/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; function Switch({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$switch$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "switch", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className), ...props, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$switch$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Thumb"], { "data-slot": "switch-thumb", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0") }, void 0, false, { fileName: "[project]/src/components/ui/switch.tsx", lineNumber: 21, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/ui/switch.tsx", lineNumber: 13, columnNumber: 5 }, this); } _c = Switch; ; var _c; __turbopack_context__.k.register(_c, "Switch"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/label.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Label", ()=>Label ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$label$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-label/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; function Label({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$label$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "label", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/label.tsx", lineNumber: 13, columnNumber: 5 }, this); } _c = Label; ; var _c; __turbopack_context__.k.register(_c, "Label"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/SettingsDialog.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "SettingsDialog", ()=>SettingsDialog ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 设置对话框 var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/dialog.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$switch$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/switch.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/label.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trash$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trash2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/trash-2.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$github$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Github$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/github.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$triangle$2d$alert$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__AlertTriangle$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/triangle-alert.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$volume$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Volume2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/volume-2.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$graduation$2d$cap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__GraduationCap$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/graduation-cap.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$external$2d$link$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ExternalLink$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/external-link.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/tutorial.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; ; ; function SettingsDialog({ open, onOpenChange }) { _s(); const soundOn = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "SettingsDialog.useGameStore[soundOn]": (s)=>s.soundOn }["SettingsDialog.useGameStore[soundOn]"]); const toggleSound = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "SettingsDialog.useGameStore[toggleSound]": (s)=>s.toggleSound }["SettingsDialog.useGameStore[toggleSound]"]); const hardReset = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "SettingsDialog.useGameStore[hardReset]": (s)=>s.hardReset }["SettingsDialog.useGameStore[hardReset]"]); const ascensions = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "SettingsDialog.useGameStore[ascensions]": (s)=>s.ascensions }["SettingsDialog.useGameStore[ascensions]"]); const totalDecoded = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "SettingsDialog.useGameStore[totalDecoded]": (s)=>s.totalDecoded }["SettingsDialog.useGameStore[totalDecoded]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [confirmReset, setConfirmReset] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Dialog"], { open: open, onOpenChange: onOpenChange, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogContent"], { className: "bg-gradient-to-br from-slate-900/80 to-black/90 border-white/15", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogHeader"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogTitle"], { children: "设置" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 40, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogDescription"], { children: "游戏偏好与存档管理" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 41, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 39, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "space-y-4 py-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], { className: "text-sm", children: "音效反馈" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 48, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: "脉冲、解码、探险、飞升等程序化音效" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 49, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 47, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "ghost", className: "h-7 px-2 text-muted-foreground hover:text-foreground", onClick: ()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("decodeSuccess"), "aria-label": "试听音效", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$volume$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Volume2$3e$__["Volume2"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 61, columnNumber: 17 }, this) }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 54, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$switch$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Switch"], { checked: soundOn, onCheckedChange: toggleSound }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 63, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 53, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 46, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$label$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Label"], { className: "text-sm", children: "新手教程" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 70, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-muted-foreground mt-0.5", children: "重新查看 5 步玩法引导" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 71, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 69, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "outline", className: "h-7 px-2 text-[11px] border-fuchsia-400/40 text-fuchsia-200 hover:bg-fuchsia-500/10", onClick: ()=>{ (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["restartTutorial"])(); onOpenChange(false); }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$graduation$2d$cap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__GraduationCap$3e$__["GraduationCap"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 84, columnNumber: 15 }, this), "重看教程" ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 75, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 68, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border border-white/10 bg-black/30 p-3 text-xs space-y-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "累计解码" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 92, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "font-mono", children: [ totalDecoded, " 颗" ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 93, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 91, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "飞升周目" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 96, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "font-mono", children: ascensions }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 97, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 95, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "存档位置" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 100, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "font-mono text-[10px]", children: "浏览器本地" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 101, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 99, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 90, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-lg border border-rose-500/30 bg-rose-950/20 p-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2 mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$triangle$2d$alert$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__AlertTriangle$3e$__["AlertTriangle"], { className: "h-4 w-4 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 108, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-sm font-medium text-rose-200", children: "危险操作" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 109, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 107, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-muted-foreground mb-2", children: "清空所有进度,包括记忆图谱与飞升记录,不可恢复。" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 111, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "outline", size: "sm", className: "border-rose-500/40 text-rose-300 hover:bg-rose-500/10", onClick: ()=>{ if (!confirmReset) { setConfirmReset(true); return; } hardReset(); setConfirmReset(false); onOpenChange(false); toast({ title: "存档已清空", description: "一切归零,重新开始。" }); }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trash$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trash2$3e$__["Trash2"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 129, columnNumber: 15 }, this), confirmReset ? "再次点击确认清空" : "清空存档" ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 114, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 106, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "space-y-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("a", { href: "https://gitea-pages.atdunbg.xyz/Super_Z/echo-nexus/", target: "_blank", rel: "noreferrer", className: "flex items-center gap-2 text-xs text-emerald-300/80 hover:text-emerald-200 transition px-1 py-1 rounded hover:bg-emerald-500/5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$external$2d$link$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ExternalLink$3e$__["ExternalLink"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 142, columnNumber: 15 }, this), "在线游玩(gitea-pages)" ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 136, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("a", { href: "https://git.atdunbg.xyz/Super_Z/echo-nexus", target: "_blank", rel: "noreferrer", className: "flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground transition px-1 py-1 rounded hover:bg-white/5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$github$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Github$3e$__["Github"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 151, columnNumber: 15 }, this), "git.atdunbg.xyz/Super_Z/echo-nexus" ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 145, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 135, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 44, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$dialog$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["DialogFooter"], { children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { variant: "ghost", onClick: ()=>onOpenChange(false), children: "关闭" }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 158, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 157, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 38, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/game/SettingsDialog.tsx", lineNumber: 37, columnNumber: 5 }, this); } _s(SettingsDialog, "9LWgEAPBmP8CMySwhsqO2rPqFiM=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = SettingsDialog; var _c; __turbopack_context__.k.register(_c, "SettingsDialog"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/ExpeditionPanel.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ExpeditionPanel", ()=>ExpeditionPanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 遗迹探险面板(v0.2 肉鸽系统,v0.9 工单修复) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/expedition.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/progress.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$swords$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Swords$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/swords.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$gem$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Gem$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/gem.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$question$2d$mark$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__HelpCircle$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/circle-question-mark.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$puzzle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Puzzle$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/puzzle.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$skull$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Skull$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/skull.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$heart$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Heart$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/heart.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/zap.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronRight$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/chevron-right.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/log-out.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rocket.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; ; ; const NODE_META = { combat: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$swords$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Swords$3e$__["Swords"], color: "#fb7185", label: "战斗", bg: "rgba(251,113,133,0.15)" }, treasure: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$gem$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Gem$3e$__["Gem"], color: "#fbbf24", label: "宝藏", bg: "rgba(251,191,36,0.15)" }, choice: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$question$2d$mark$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__HelpCircle$3e$__["HelpCircle"], color: "#a5f3fc", label: "抉择", bg: "rgba(165,243,252,0.15)" }, puzzle: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$puzzle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Puzzle$3e$__["Puzzle"], color: "#e879f9", label: "解谜", bg: "rgba(232,121,249,0.15)" }, rest: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$heart$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Heart$3e$__["Heart"], color: "#34d399", label: "休整", bg: "rgba(52,211,153,0.15)" }, boss: { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$skull$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Skull$3e$__["Skull"], color: "#f43f5e", label: "BOSS", bg: "rgba(244,63,94,0.2)" } }; function ExpeditionPanel() { _s(); const activeExpedition = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[activeExpedition]": (s)=>s.activeExpedition }["ExpeditionPanel.useGameStore[activeExpedition]"]); const energy = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[energy]": (s)=>s.energy }["ExpeditionPanel.useGameStore[energy]"]); const energyMax = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[energyMax]": (s)=>s.energyMax }["ExpeditionPanel.useGameStore[energyMax]"]); const lastEnergyTick = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[lastEnergyTick]": (s)=>s.lastEnergyTick }["ExpeditionPanel.useGameStore[lastEnergyTick]"]); const expeditionLog = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[expeditionLog]": (s)=>s.expeditionLog }["ExpeditionPanel.useGameStore[expeditionLog]"]); const totalExpeditions = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[totalExpeditions]": (s)=>s.totalExpeditions }["ExpeditionPanel.useGameStore[totalExpeditions]"]); const lastExpeditionSummary = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[lastExpeditionSummary]": (s)=>s.lastExpeditionSummary }["ExpeditionPanel.useGameStore[lastExpeditionSummary]"]); // v0.8.1 动态能量恢复间隔(技术 + 探索力属性缩短) const regenIntervalSec = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[regenIntervalSec]": (s)=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["computeEnergyRegenInterval"])(s) }["ExpeditionPanel.useGameStore[regenIntervalSec]"]); const startExpedition = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[startExpedition]": (s)=>s.startExpedition }["ExpeditionPanel.useGameStore[startExpedition]"]); const resolveCurrentNode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[resolveCurrentNode]": (s)=>s.resolveCurrentNode }["ExpeditionPanel.useGameStore[resolveCurrentNode]"]); const advanceNode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[advanceNode]": (s)=>s.advanceNode }["ExpeditionPanel.useGameStore[advanceNode]"]); const abortExpedition = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ExpeditionPanel.useGameStore[abortExpedition]": (s)=>s.abortExpedition }["ExpeditionPanel.useGameStore[abortExpedition]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [lastLog, setLastLog] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [now, setNow] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({ "ExpeditionPanel.useState": ()=>Date.now() }["ExpeditionPanel.useState"]); // v0.9 工单修复:能量恢复实时倒计时(每秒刷新) (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "ExpeditionPanel.useEffect": ()=>{ const id = setInterval({ "ExpeditionPanel.useEffect.id": ()=>setNow(Date.now()) }["ExpeditionPanel.useEffect.id"], 1000); return ({ "ExpeditionPanel.useEffect": ()=>clearInterval(id) })["ExpeditionPanel.useEffect"]; } }["ExpeditionPanel.useEffect"], []); // 能量恢复进度(v0.8.1 动态间隔,v0.9 实时刷新) const regenMs = regenIntervalSec * 1000; const elapsed = now - lastEnergyTick; const regenProgress = energy >= energyMax ? 100 : Math.min(100, elapsed / regenMs * 100); const regenBoosted = regenIntervalSec < __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyRegenSec; const nextEnergyInSec = energy >= energyMax ? 0 : Math.max(0, Math.ceil((regenMs - elapsed) / 1000)); const canStart = energy >= __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyCost; const handleStart = ()=>{ const res = startExpedition(); if (!res.ok) { toast({ title: "无法出发", description: res.reason, variant: "destructive" }); } else { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("expeditionStart"); toast({ title: "探险队出发", description: "深入遗迹,谨慎前行。" }); setLastLog(null); } }; const handleResolve = ()=>{ const result = resolveCurrentNode(); if (!result) return; setLastLog(result.log); if (result.ended) { if (result.endReason === "victory") (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("expeditionVictory"); else (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("expeditionDefeat"); } else { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("expeditionNode"); } toast({ title: result.ended ? result.endReason === "victory" ? "✦ 探险胜利!" : "探险失败" : "节点结算", description: result.log, variant: result.endReason === "defeat" ? "destructive" : "default" }); }; const handleAdvance = ()=>{ advanceNode(); setLastLog(null); }; const handleAbort = ()=>{ abortExpedition(); toast({ title: "探险队撤退", description: "保留已获奖励,安全返回。" }); setLastLog(null); }; // ===== 无活跃探险:展示入口 ===== // v0.10 工单 #2 修复:探险结束自动清空 activeExpedition,无需 justFinished 判断 if (!activeExpedition || activeExpedition.finished) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col gap-3 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "text-sm font-semibold flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], { className: "h-4 w-4 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 117, columnNumber: 13 }, this), "遗迹探险" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 116, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] text-muted-foreground", children: [ "已探索 ", totalExpeditions, " 次" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 120, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 115, columnNumber: 9 }, this), lastExpeditionSummary && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `rounded-xl border p-2.5 relative overflow-hidden ${lastExpeditionSummary.result === "victory" ? "border-emerald-400/40 bg-emerald-950/20" : lastExpeditionSummary.result === "defeat" ? "border-rose-400/40 bg-rose-950/20" : "border-amber-400/30 bg-amber-950/10"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[11px] font-semibold flex items-center gap-1", children: lastExpeditionSummary.result === "victory" ? "✦ 上次探险:胜利" : lastExpeditionSummary.result === "defeat" ? "✕ 上次探险:失败" : "→ 上次探险:撤退" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 135, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[9px] text-muted-foreground font-mono", children: [ lastExpeditionSummary.nodeCount, " 节点" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 138, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 134, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2.5 text-[10px]", children: [ lastExpeditionSummary.rewards.crystals > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-emerald-300", children: [ "+", (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(lastExpeditionSummary.rewards.crystals), " 晶体" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 142, columnNumber: 17 }, this), lastExpeditionSummary.rewards.insights > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-amber-300", children: [ "+", lastExpeditionSummary.rewards.insights, " 洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 145, columnNumber: 17 }, this), lastExpeditionSummary.rewards.contact > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-fuchsia-300", children: [ "+", lastExpeditionSummary.rewards.contact.toFixed(1), " 接触" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 148, columnNumber: 17 }, this), lastExpeditionSummary.rewards.crystals === 0 && lastExpeditionSummary.rewards.insights === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground/60", children: "无奖励" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 151, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 140, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 125, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-xl border border-amber-400/20 bg-amber-950/20 p-3", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between mb-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], { className: "h-3.5 w-3.5 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 161, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-xs text-amber-200", children: "探险能量" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 162, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 160, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-xs font-mono text-amber-100", children: [ energy, " / ", energyMax ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 164, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 159, columnNumber: 11 }, this), energy < energyMax ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: regenProgress, className: "h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-yellow-300" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 170, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[10px] text-muted-foreground/70 mt-1 flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { children: "下一点能量" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 175, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-amber-300 font-mono font-semibold", children: [ nextEnergyInSec, "s" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 176, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { children: "后恢复" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 177, columnNumber: 17 }, this), regenBoosted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-emerald-400/80 ml-1", children: [ "⚡ ", regenIntervalSec.toFixed(0), "s/点 (已加速)" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 179, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 174, columnNumber: 15 }, this) ] }, void 0, true) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[10px] text-amber-300/80 mt-0.5", children: "能量已满,可立即出发" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 184, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 158, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 flex flex-col items-center justify-center gap-3 rounded-2xl border border-dashed border-amber-400/20 bg-black/30 p-4 relative overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute -top-10 -right-10 h-32 w-32 rounded-full bg-amber-500/10 blur-2xl" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 190, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `h-16 w-16 rounded-full bg-gradient-to-br from-amber-500/30 to-rose-500/20 flex items-center justify-center mx-auto ${canStart ? "animate-pulse" : ""}`, style: { boxShadow: "0 0 30px rgba(251,191,36,0.3)" }, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], { className: "h-7 w-7 text-amber-300" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 193, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 192, columnNumber: 13 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 191, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-center space-y-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-sm font-medium text-amber-100", children: "深入以太遗迹" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 197, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-muted-foreground/80 max-w-[220px]", children: "程序化生成的遗迹路径,沿途遭遇战斗、宝藏、抉择与解谜,击败终点 BOSS 获取丰厚奖励。" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 198, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 196, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleStart, disabled: !canStart, className: "bg-gradient-to-r from-amber-600 to-rose-500 hover:from-amber-500 hover:to-rose-400 text-white border-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], { className: "h-4 w-4 mr-1.5" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 207, columnNumber: 13 }, this), canStart ? `出发(消耗 ${__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyCost} 能量)` : `能量不足(${nextEnergyInSec}s 后恢复)` ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 202, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 189, columnNumber: 9 }, this), expeditionLog.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-xl border border-white/5 bg-black/20 p-2 max-h-28 overflow-y-auto echo-scroll", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground/60 mb-1 px-1", children: "最近探险记录" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 215, columnNumber: 13 }, this), expeditionLog.slice(0, 4).map((entry, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground/70 px-1 py-0.5 border-b border-white/5 last:border-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-amber-300/60", children: "›" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 218, columnNumber: 17 }, this), " ", entry.result, entry.rewards && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-emerald-300/70 ml-1", children: entry.rewards }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 219, columnNumber: 35 }, this) ] }, i, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 217, columnNumber: 15 }, this)) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 214, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 114, columnNumber: 7 }, this); } // ===== 活跃探险:展示地图 + 事件 ===== const exp = activeExpedition; const currentNode = exp.nodes[exp.currentNode]; const nodeMeta = NODE_META[currentNode.type]; const NodeIcon = nodeMeta.icon; const hpPct = exp.hp / exp.maxHp * 100; const pathProgress = (exp.currentNode + (currentNode.cleared ? 1 : 0)) / exp.nodes.length * 100; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex flex-col gap-2.5 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], { className: "h-3.5 w-3.5 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 241, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-xs font-semibold", children: "遗迹探险" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 242, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[10px] text-muted-foreground", children: [ "第 ", exp.currentNode + 1, "/", exp.nodes.length, " 节点" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 243, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 240, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[10px] text-muted-foreground", children: "探险力" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 246, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-xs font-mono font-semibold text-amber-300", children: exp.power }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 247, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 245, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 239, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center justify-between mb-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$heart$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Heart$3e$__["Heart"], { className: "h-3 w-3 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 255, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[10px] text-muted-foreground", children: "探险队生命" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 256, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 254, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + `text-[10px] font-mono ${hpPct < 30 ? "text-rose-400" : "text-foreground"}`, children: [ exp.hp, " / ", exp.maxHp ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 258, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 253, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: hpPct, className: "h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-rose-500 [&>div]:to-emerald-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 262, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 252, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "rounded-xl border border-white/10 bg-black/30 p-2.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1 overflow-x-auto echo-scroll pb-1", children: exp.nodes.map((node, i)=>{ const meta = NODE_META[node.type]; const Icon = meta.icon; const isCurrent = i === exp.currentNode; const isCleared = node.cleared; const isPast = i < exp.currentNode; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: isCleared || isPast ? "rgba(255,255,255,0.04)" : meta.bg, border: isCurrent ? `1.5px solid ${meta.color}` : "1px solid rgba(255,255,255,0.08)", boxShadow: isCurrent ? `0 0 12px ${meta.color}66` : "none" }, title: `${meta.label} · ${node.title}`, className: "jsx-df1c681cdb543264" + " " + `relative h-9 w-9 rounded-lg flex items-center justify-center transition-all duration-300 ${isCurrent ? "scale-125" : ""}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Icon, { style: { color: isCleared || isPast ? "#666" : meta.color }, className: "jsx-df1c681cdb543264" + " " + `h-4 w-4 ${isCleared || isPast ? "opacity-30" : ""}` }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 290, columnNumber: 19 }, this), isCleared && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "absolute -top-1 -right-1 h-3 w-3 rounded-full bg-emerald-500/80 flex items-center justify-center", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[8px] text-white", children: "✓" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 293, columnNumber: 23 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 292, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 279, columnNumber: 17 }, this), i < exp.nodes.length - 1 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronRight$3e$__["ChevronRight"], { className: `h-3 w-3 mx-0.5 ${isPast || isCurrent && isCleared ? "text-amber-400/60" : "text-white/15"}` }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 298, columnNumber: 19 }, this) ] }, node.id, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 278, columnNumber: 15 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 270, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "mt-1.5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: pathProgress, className: "h-1 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 305, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 304, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 269, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: `${nodeMeta.color}44`, background: `linear-gradient(135deg, ${nodeMeta.color}11, rgba(0,0,0,0.4))`, boxShadow: `0 0 20px ${nodeMeta.color}22` }, className: "jsx-df1c681cdb543264" + " " + "rounded-xl border p-3 relative overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: `${nodeMeta.color}22` }, className: "jsx-df1c681cdb543264" + " " + "absolute -top-8 -right-8 h-24 w-24 rounded-full blur-2xl" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 318, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "relative", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-2 mb-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: nodeMeta.bg, border: `1px solid ${nodeMeta.color}44` }, className: "jsx-df1c681cdb543264" + " " + "h-8 w-8 rounded-lg flex items-center justify-center", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(NodeIcon, { style: { color: nodeMeta.color }, className: "jsx-df1c681cdb543264" + " " + "h-4 w-4" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 325, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 321, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: nodeMeta.bg, color: nodeMeta.color }, className: "jsx-df1c681cdb543264" + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded", children: nodeMeta.label }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 329, columnNumber: 17 }, this), currentNode.type === "combat" && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[10px] text-muted-foreground", children: [ "胜率 ", Math.round((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["combatWinRate"])(exp.power, currentNode.difficulty) * 100), "%" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 333, columnNumber: 19 }, this), currentNode.difficulty > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-[10px] text-muted-foreground/60", children: [ "难度 ", currentNode.difficulty ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 338, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 328, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { style: { color: nodeMeta.color }, className: "jsx-df1c681cdb543264" + " " + "text-sm font-semibold mt-0.5", children: currentNode.title }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 341, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 327, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 320, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-df1c681cdb543264" + " " + "text-[11px] text-muted-foreground/90 leading-relaxed", children: currentNode.desc }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 346, columnNumber: 11 }, this), lastLog && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "mt-2 px-2 py-1.5 rounded-lg bg-black/40 border border-white/10", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-df1c681cdb543264" + " " + "text-[11px] text-foreground/90", children: lastLog }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 353, columnNumber: 15 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 352, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 319, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 310, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-1.5", children: [ !currentNode.cleared ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleResolve, className: "flex-1 bg-gradient-to-r from-amber-600 to-rose-500 hover:from-amber-500 hover:to-rose-400 text-white border-0 h-8", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 366, columnNumber: 13 }, this), "探索节点" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 362, columnNumber: 11 }, this) : exp.currentNode < exp.nodes.length - 1 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleAdvance, className: "flex-1 h-8", variant: "outline", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronRight$3e$__["ChevronRight"], { className: "h-3.5 w-3.5 mr-1" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 375, columnNumber: 13 }, this), "前进" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 370, columnNumber: 11 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex-1 text-center text-xs text-emerald-300 py-1.5", children: "探险已完成 ✓" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 379, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleAbort, variant: "ghost", size: "sm", className: "h-8 px-2 text-muted-foreground hover:text-rose-300", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$log$2d$out$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__LogOut$3e$__["LogOut"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 387, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 381, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 360, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-df1c681cdb543264" + " " + "flex items-center gap-2 text-[10px] px-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-muted-foreground/60", children: "本次已获:" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 393, columnNumber: 9 }, this), exp.rewards.crystals > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-emerald-300", children: [ (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(exp.rewards.crystals), "晶体" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 394, columnNumber: 38 }, this), exp.rewards.insights > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-amber-300", children: [ exp.rewards.insights, "洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 395, columnNumber: 38 }, this), exp.rewards.contact > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-fuchsia-300", children: [ exp.rewards.contact.toFixed(1), "接触" ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 396, columnNumber: 37 }, this), exp.rewards.crystals === 0 && exp.rewards.insights === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-df1c681cdb543264" + " " + "text-muted-foreground/40", children: "暂无" }, void 0, false, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 398, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 392, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "df1c681cdb543264", children: ".echo-scroll::-webkit-scrollbar{width:4px;height:4px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.echo-scroll::-webkit-scrollbar-track{background:0 0}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExpeditionPanel.tsx", lineNumber: 237, columnNumber: 5 }, this); } _s(ExpeditionPanel, "FR5mW+pym+CWCiYwojfRmBLsSFM=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = ExpeditionPanel; var _c; __turbopack_context__.k.register(_c, "ExpeditionPanel"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/AchievementsPanel.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "AchievementsPanel", ()=>AchievementsPanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 成就系统面板(v0.10 工单 #2 重写:单列 + 分类过滤 + 防溢出) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/achievements.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/trophy.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/lock.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$funnel$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Filter$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/funnel.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; const FILTER_TABS = [ { key: "all", label: "全部", color: "#a78bfa" }, { key: "unlocked", label: "已解锁", color: "#34d399" }, { key: "locked", label: "未解锁", color: "#fb7185" } ]; function AchievementsPanel() { _s(); const achievements = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AchievementsPanel.useGameStore[achievements]": (s)=>s.achievements }["AchievementsPanel.useGameStore[achievements]"]); const [filter, setFilter] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("all"); const unlockedCount = Object.values(achievements).filter(Boolean).length; const bonus = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["achievementBonuses"])(achievements); const totalCount = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ACHIEVEMENTS"].length; const unlockPct = totalCount > 0 ? unlockedCount / totalCount * 100 : 0; // 按筛选条件过滤成就列表 const filtered = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "AchievementsPanel.useMemo[filtered]": ()=>{ return __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ACHIEVEMENTS"].filter({ "AchievementsPanel.useMemo[filtered]": (a)=>{ const unlocked = !!achievements[a.id]; if (filter === "unlocked") return unlocked; if (filter === "locked") return !unlocked; return true; } }["AchievementsPanel.useMemo[filtered]"]); } }["AchievementsPanel.useMemo[filtered]"], [ achievements, filter ]); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex flex-col gap-2.5 h-full min-h-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "jsx-89979d12e77b884d" + " " + "text-sm font-semibold flex items-center gap-1.5 shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__["Trophy"], { className: "h-4 w-4 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 40, columnNumber: 11 }, this), "成就" ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 39, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-2 text-[10px] font-mono", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-amber-300", children: unlockedCount }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 44, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/50", children: "/" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 45, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground", children: totalCount }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 46, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/60", children: [ "(", unlockPct.toFixed(0), "%)" ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 47, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 43, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 38, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "h-1 rounded-full bg-black/40 overflow-hidden", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { width: `${unlockPct}%`, boxShadow: "0 0 8px rgba(251,191,36,0.5)" }, className: "jsx-89979d12e77b884d" + " " + "h-full bg-gradient-to-r from-amber-500 via-rose-400 to-fuchsia-400 transition-all duration-500" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 53, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 52, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "rounded-lg border border-amber-400/20 bg-amber-950/20 px-2.5 py-1.5 flex items-center gap-2 text-[10px] flex-wrap", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3 w-3 text-amber-400 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 61, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-amber-300/80", children: "永久加成" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 62, columnNumber: 9 }, this), bonus.crystalsPerSecPct > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-emerald-300", children: [ "产能 +", bonus.crystalsPerSecPct, "%" ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 64, columnNumber: 11 }, this), bonus.insightPct > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-fuchsia-300", children: [ "洞见 +", bonus.insightPct, "%" ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 67, columnNumber: 11 }, this), bonus.crystalsPerSecPct === 0 && bonus.insightPct === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/60", children: "达成成就解锁永久加成" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 70, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 60, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-1 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$funnel$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Filter$3e$__["Filter"], { className: "h-3 w-3 text-muted-foreground/60 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 76, columnNumber: 9 }, this), FILTER_TABS.map((t)=>{ const active = filter === t.key; const count = t.key === "all" ? totalCount : t.key === "unlocked" ? unlockedCount : totalCount - unlockedCount; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: ()=>setFilter(t.key), style: active ? { color: t.color, boxShadow: `inset 0 0 0 1px ${t.color}55` } : undefined, className: "jsx-89979d12e77b884d" + " " + `px-2 py-0.5 rounded-md transition-all ${active ? "bg-white/10 text-foreground" : "text-muted-foreground/70 hover:text-foreground hover:bg-white/5"}`, children: [ t.label, /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "ml-1 font-mono opacity-70", children: count }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 97, columnNumber: 15 }, this) ] }, t.key, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 86, columnNumber: 13 }, this); }) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 75, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex-1 min-h-0 overflow-y-auto echo-scroll pr-1 space-y-1.5", children: [ filtered.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "text-center text-[11px] text-muted-foreground/60 py-6", children: "该分类下暂无成就" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 106, columnNumber: 11 }, this), filtered.map((a)=>{ const unlocked = !!achievements[a.id]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: unlocked ? { boxShadow: `inset 0 0 14px ${a.color}10` } : undefined, className: "jsx-89979d12e77b884d" + " " + `relative rounded-lg border px-2.5 py-2 transition-all duration-300 min-h-[68px] flex items-center ${unlocked ? "border-white/15 bg-black/30" : "border-white/5 bg-black/15 opacity-70"}`, children: [ unlocked && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: a.color }, className: "jsx-89979d12e77b884d" + " " + "absolute -top-6 -right-6 h-16 w-16 rounded-full blur-2xl opacity-40 pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 127, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: unlocked ? `${a.color}22` : "rgba(255,255,255,0.04)", border: `1px solid ${unlocked ? a.color + "55" : "rgba(255,255,255,0.08)"}`, color: unlocked ? a.color : "#666", boxShadow: unlocked ? `0 0 10px ${a.color}33` : "none" }, className: "jsx-89979d12e77b884d" + " " + "shrink-0 h-10 w-10 rounded-lg flex items-center justify-center text-lg mr-2.5", children: unlocked ? a.icon : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__["Lock"], { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 142, columnNumber: 38 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 133, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "min-w-0 flex-1 flex flex-col gap-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: unlocked ? a.color : "rgba(255,255,255,0.5)" }, className: "jsx-89979d12e77b884d" + " " + "text-[11px] font-semibold truncate", children: a.name }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 147, columnNumber: 19 }, this), unlocked && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: `${a.color}22`, color: a.color }, className: "jsx-89979d12e77b884d" + " " + "text-[8px] px-1 py-0 rounded shrink-0 font-mono", children: "✓" }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 154, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 146, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "text-[10px] text-muted-foreground/80 leading-tight line-clamp-2", children: a.desc }, void 0, false, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 162, columnNumber: 17 }, this), unlocked && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { color: a.color + "cc" }, className: "jsx-89979d12e77b884d" + " " + "text-[9px] mt-0.5 font-mono truncate", children: [ "✦ ", a.rewardText ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 166, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 145, columnNumber: 15 }, this) ] }, a.id, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 113, columnNumber: 13 }, this); }) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 104, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "89979d12e77b884d", children: ".echo-scroll::-webkit-scrollbar{width:5px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementsPanel.tsx", lineNumber: 36, columnNumber: 5 }, this); } _s(AchievementsPanel, "GqbFbWwKEylYjiiR9koAZ6owrsU=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = AchievementsPanel; var _c; __turbopack_context__.k.register(_c, "AchievementsPanel"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/AchievementNotifier.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "AchievementNotifier", ()=>AchievementNotifier ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 成就解锁通知(v0.9 全屏特效增强) // 工单 Issue #2 反馈"成就系统没看出来有什么用",改为居中全息弹窗 + 奖励数字弹出 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$components$2f$AnimatePresence$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; function AchievementNotifier() { _s(); const queue = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AchievementNotifier.useGameStore[queue]": (s)=>s._achievementQueue }["AchievementNotifier.useGameStore[queue]"]); const consume = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AchievementNotifier.useGameStore[consume]": (s)=>s.consumeAchievementQueue }["AchievementNotifier.useGameStore[consume]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [notifications, setNotifications] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "AchievementNotifier.useEffect": ()=>{ if (queue.length === 0) return; const items = consume(); for (const a of items){ (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("achievement"); // v0.9:全屏居中特效通知 const id = Date.now() + Math.random(); // eslint-disable-next-line react-hooks/set-state-in-effect setNotifications({ "AchievementNotifier.useEffect": (prev)=>[ ...prev, { achievement: a, id } ] }["AchievementNotifier.useEffect"]); // 4 秒后自动移除 setTimeout({ "AchievementNotifier.useEffect": ()=>{ setNotifications({ "AchievementNotifier.useEffect": (prev)=>prev.filter({ "AchievementNotifier.useEffect": (n)=>n.id !== id }["AchievementNotifier.useEffect"]) }["AchievementNotifier.useEffect"]); } }["AchievementNotifier.useEffect"], 4000); // 同时保留底部 toast 作为日志 toast({ title: `成就解锁:${a.name}`, description: `${a.desc} 奖励:${a.rewardText}` }); } } }["AchievementNotifier.useEffect"], [ queue, consume, toast ]); if (notifications.length === 0) return null; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed inset-0 z-[120] pointer-events-none flex items-center justify-center", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$components$2f$AnimatePresence$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AnimatePresence"], { children: notifications.map((n, idx)=>{ const a = n.achievement; // 多个同时出现时垂直堆叠偏移 const offset = (idx - (notifications.length - 1) / 2) * 140; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { initial: { opacity: 0, scale: 0.4, y: 40, rotateX: -30 }, animate: { opacity: 1, scale: 1, y: offset, rotateX: 0 }, exit: { opacity: 0, scale: 0.6, y: -60 }, transition: { type: "spring", stiffness: 280, damping: 22 }, className: "absolute", style: { transformOrigin: "center center" }, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative rounded-2xl border-2 px-8 py-5 backdrop-blur-xl overflow-hidden", style: { borderColor: a.color, background: `linear-gradient(135deg, ${a.color}22, rgba(5,4,16,0.92))`, boxShadow: `0 0 60px ${a.color}66, 0 0 120px ${a.color}33, inset 0 0 30px ${a.color}11`, minWidth: 320, maxWidth: 420 }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute -top-20 -right-20 h-40 w-40 rounded-full blur-3xl opacity-50", style: { background: a.color } }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 73, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { className: "absolute inset-0 rounded-2xl opacity-20", style: { background: `conic-gradient(from 0deg, transparent, ${a.color}, transparent, ${a.color}, transparent)` }, animate: { rotate: 360 }, transition: { duration: 8, repeat: Infinity, ease: "linear" } }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 78, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative flex items-center gap-4", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { className: "shrink-0 h-16 w-16 rounded-2xl flex items-center justify-center text-3xl", style: { background: `${a.color}33`, border: `2px solid ${a.color}`, boxShadow: `0 0 20px ${a.color}88, inset 0 0 12px ${a.color}44` }, animate: { boxShadow: [ `0 0 20px ${a.color}88, inset 0 0 12px ${a.color}44`, `0 0 40px ${a.color}cc, inset 0 0 20px ${a.color}66`, `0 0 20px ${a.color}88, inset 0 0 12px ${a.color}44` ] }, transition: { duration: 2, repeat: Infinity }, children: a.icon }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 89, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "min-w-0 flex-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, transition: { delay: 0.15 }, className: "text-[10px] font-mono uppercase tracking-[0.2em] mb-0.5", style: { color: a.color }, children: "✦ Achievement Unlocked" }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 110, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].h3, { initial: { opacity: 0, x: -10 }, animate: { opacity: 1, x: 0 }, transition: { delay: 0.2 }, className: "text-lg font-bold truncate", style: { color: a.color, textShadow: `0 0 12px ${a.color}66` }, children: a.name }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 119, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].p, { initial: { opacity: 0 }, animate: { opacity: 1 }, transition: { delay: 0.3 }, className: "text-[11px] text-muted-foreground/90 truncate", children: a.desc }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 128, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.4 }, className: "mt-1.5 inline-flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-mono font-semibold", style: { background: `${a.color}22`, border: `1px solid ${a.color}55`, color: a.color }, children: [ "▸ ", a.rewardText ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 137, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 109, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 87, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$framer$2d$motion$2f$dist$2f$es$2f$render$2f$components$2f$motion$2f$proxy$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["motion"].div, { className: "absolute bottom-0 left-0 h-0.5", style: { background: a.color }, initial: { width: "100%" }, animate: { width: "0%" }, transition: { duration: 4, ease: "linear" } }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 154, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 62, columnNumber: 15 }, this) }, n.id, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 53, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 47, columnNumber: 7 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AchievementNotifier.tsx", lineNumber: 46, columnNumber: 5 }, this); } _s(AchievementNotifier, "oieRFR54daXP36ucFl1dyC1oJI0=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = AchievementNotifier; var _c; __turbopack_context__.k.register(_c, "AchievementNotifier"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/ConstellationPanel.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ConstellationPanel", ()=>ConstellationPanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 星图天文台面板(飞升元进程可视化) // 6 个星座(六边形布局)× 3 颗星 = 18 个天赋节点,已解锁的星点亮 + 连线 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/constellation.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; function ConstellationPanel() { _s(); const constellation = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "ConstellationPanel.useGameStore[constellation]": (s)=>s.constellation ?? [] }["ConstellationPanel.useGameStore[constellation]"]); const canvasRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); const containerRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); const [size, setSize] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({ w: 360, h: 360 }); const [hover, setHover] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const ownedSet = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "ConstellationPanel.useMemo[ownedSet]": ()=>new Set(constellation) }["ConstellationPanel.useMemo[ownedSet]"], [ constellation ]); // 自适应尺寸 (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "ConstellationPanel.useEffect": ()=>{ const el = containerRef.current; if (!el) return; const ro = new ResizeObserver({ "ConstellationPanel.useEffect": ()=>{ const r = el.getBoundingClientRect(); setSize({ w: Math.max(280, r.width), h: Math.max(280, Math.min(420, r.width)) }); } }["ConstellationPanel.useEffect"]); ro.observe(el); return ({ "ConstellationPanel.useEffect": ()=>ro.disconnect() })["ConstellationPanel.useEffect"]; } }["ConstellationPanel.useEffect"], []); // 计算布局(中心点 + 半径) const layout = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "ConstellationPanel.useMemo[layout]": ()=>{ const cx = size.w / 2; const cy = size.h / 2; const radius = Math.min(size.w, size.h) * 0.32; return { cx, cy, radius }; } }["ConstellationPanel.useMemo[layout]"], [ size ]); // 收集所有星点 + 每个星座的星点列表 const clusters = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "ConstellationPanel.useMemo[clusters]": ()=>{ const centers = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getConstellationLayout"])(layout.cx, layout.cy, layout.radius); return centers.map({ "ConstellationPanel.useMemo[clusters]": (c)=>{ const stars = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getStarsInCategory"])(c.category, c.cx, c.cy, 1); return { ...c, stars }; } }["ConstellationPanel.useMemo[clusters]"]); } }["ConstellationPanel.useMemo[clusters]"], [ layout ]); // 绘制 (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "ConstellationPanel.useEffect": ()=>{ const canvas = canvasRef.current; if (!canvas) return; const ctx = canvas.getContext("2d"); if (!ctx) return; const dpr = window.devicePixelRatio || 1; canvas.width = size.w * dpr; canvas.height = size.h * dpr; canvas.style.width = `${size.w}px`; canvas.style.height = `${size.h}px`; ctx.setTransform(dpr, 0, 0, dpr, 0, 0); let rafId = 0; const start = performance.now(); const draw = { "ConstellationPanel.useEffect.draw": (now)=>{ const t = (now - start) / 1000; ctx.clearRect(0, 0, size.w, size.h); // 背景径向暗光 const bg = ctx.createRadialGradient(layout.cx, layout.cy, 0, layout.cx, layout.cy, layout.radius * 1.6); bg.addColorStop(0, "rgba(40,30,80,0.18)"); bg.addColorStop(1, "rgba(5,4,16,0)"); ctx.fillStyle = bg; ctx.fillRect(0, 0, size.w, size.h); // 中心装饰:星核 ctx.save(); ctx.translate(layout.cx, layout.cy); const coreR = 6 + Math.sin(t * 1.5) * 1.5; const coreGrad = ctx.createRadialGradient(0, 0, 0, 0, 0, coreR * 3); coreGrad.addColorStop(0, "rgba(232,121,249,0.9)"); coreGrad.addColorStop(0.4, "rgba(232,121,249,0.3)"); coreGrad.addColorStop(1, "rgba(232,121,249,0)"); ctx.fillStyle = coreGrad; ctx.beginPath(); ctx.arc(0, 0, coreR * 3, 0, Math.PI * 2); ctx.fill(); ctx.fillStyle = "#fce7ff"; ctx.beginPath(); ctx.arc(0, 0, coreR * 0.6, 0, Math.PI * 2); ctx.fill(); ctx.restore(); // 连接星座到中心的虚线(已解锁 >=1 时) for (const c of clusters){ const cnt = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["countUnlockedInCategory"])(constellation, c.category); if (cnt > 0) { ctx.save(); ctx.strokeStyle = c.meta.glow; ctx.lineWidth = 1; ctx.setLineDash([ 2, 4 ]); ctx.globalAlpha = 0.4 + Math.sin(t * 2 + c.cx) * 0.1; ctx.beginPath(); ctx.moveTo(layout.cx, layout.cy); ctx.lineTo(c.cx, c.cy); ctx.stroke(); ctx.restore(); } } // 绘制每个星座 for (const c of clusters){ const cnt = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["countUnlockedInCategory"])(constellation, c.category); // 星座中心标签 ctx.save(); ctx.font = "10px ui-monospace, monospace"; ctx.textAlign = "center"; ctx.fillStyle = cnt > 0 ? c.meta.hex : "rgba(148,163,184,0.5)"; ctx.globalAlpha = 0.85; ctx.fillText(c.meta.name, c.cx, c.cy + 38); ctx.restore(); // 同星座内已解锁星点之间的连线 const unlockedStars = c.stars.filter({ "ConstellationPanel.useEffect.draw.unlockedStars": (s)=>ownedSet.has(s.perk.id) }["ConstellationPanel.useEffect.draw.unlockedStars"]); if (unlockedStars.length >= 2) { ctx.save(); ctx.strokeStyle = c.meta.glow; ctx.lineWidth = 1.5; ctx.globalAlpha = 0.6; ctx.beginPath(); unlockedStars.forEach({ "ConstellationPanel.useEffect.draw": (s, i)=>{ if (i === 0) ctx.moveTo(s.x, s.y); else ctx.lineTo(s.x, s.y); } }["ConstellationPanel.useEffect.draw"]); ctx.stroke(); ctx.restore(); } // 绘制星点 for (const star of c.stars){ const unlocked = ownedSet.has(star.perk.id); ctx.save(); ctx.translate(star.x, star.y); // 闪烁系数 const twinkle = unlocked ? 0.85 + Math.sin(t * 3 + star.x * 0.1) * 0.15 : 0.3; // 外光晕 const haloR = unlocked ? 10 : 5; const haloGrad = ctx.createRadialGradient(0, 0, 0, 0, 0, haloR); haloGrad.addColorStop(0, unlocked ? c.meta.glow : "rgba(100,116,139,0.2)"); haloGrad.addColorStop(1, "rgba(0,0,0,0)"); ctx.fillStyle = haloGrad; ctx.globalAlpha = twinkle; ctx.beginPath(); ctx.arc(0, 0, haloR, 0, Math.PI * 2); ctx.fill(); // 核心 ctx.globalAlpha = unlocked ? 1 : 0.4; ctx.fillStyle = unlocked ? c.meta.hex : "#475569"; ctx.beginPath(); ctx.arc(0, 0, unlocked ? 3.5 : 2, 0, Math.PI * 2); ctx.fill(); // 解锁星点:4 道十字光线 if (unlocked) { ctx.strokeStyle = c.meta.hex; ctx.globalAlpha = 0.7 * twinkle; ctx.lineWidth = 0.8; const ray = 7 + Math.sin(t * 4 + star.y * 0.1) * 1.5; ctx.beginPath(); ctx.moveTo(-ray, 0); ctx.lineTo(ray, 0); ctx.moveTo(0, -ray); ctx.lineTo(0, ray); ctx.stroke(); } ctx.restore(); } } rafId = requestAnimationFrame(draw); } }["ConstellationPanel.useEffect.draw"]; rafId = requestAnimationFrame(draw); return ({ "ConstellationPanel.useEffect": ()=>cancelAnimationFrame(rafId) })["ConstellationPanel.useEffect"]; } }["ConstellationPanel.useEffect"], [ clusters, layout, size, constellation, ownedSet ]); // 鼠标交互:检测 hover const handleMove = (e)=>{ const canvas = canvasRef.current; if (!canvas) return; const rect = canvas.getBoundingClientRect(); const mx = e.clientX - rect.left; const my = e.clientY - rect.top; let best = null; let bestDist = 14; for (const c of clusters){ for (const star of c.stars){ const d = Math.hypot(star.x - mx, star.y - my); if (d < bestDist) { bestDist = d; best = { perk: star.perk, x: star.x, y: star.y, unlocked: ownedSet.has(star.perk.id) }; } } } setHover(best); }; const handleLeave = ()=>setHover(null); const progress = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["constellationProgress"])(constellation); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { ref: containerRef, className: "flex flex-col gap-2 min-h-0 h-full", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between text-[11px] px-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-fuchsia-300", children: "✦" }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 234, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground", children: "星图天赋" }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 235, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "font-mono text-foreground", children: [ progress.unlocked, "/", progress.total ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 236, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 233, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground/60 text-[10px]", children: "每次飞升可解锁 1 个" }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 240, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 232, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative rounded-xl bg-black/30 border border-white/5 overflow-hidden flex-shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("canvas", { ref: canvasRef, onMouseMove: handleMove, onMouseLeave: handleLeave, className: "block cursor-pointer" }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 245, columnNumber: 9 }, this), hover && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "pointer-events-none absolute z-10 max-w-[200px] rounded-md bg-black/85 border border-white/10 px-2 py-1.5 text-[10px] leading-tight shadow-lg backdrop-blur-sm", style: { left: Math.min(hover.x + 12, size.w - 200), top: Math.max(0, hover.y - 40) }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "font-bold mb-0.5", style: { color: __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_CATEGORY_META"][hover.perk.category].hex }, children: [ hover.unlocked ? "★ " : "☆ ", hover.perk.name ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 260, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-muted-foreground", children: hover.perk.desc }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 267, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-muted-foreground/60 mt-0.5", children: [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_CATEGORY_META"][hover.perk.category].name, " · 序", hover.perk.order ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 268, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 253, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 244, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "grid grid-cols-3 gap-1 text-[10px]", children: Object.keys(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_CATEGORY_META"]).map((cat)=>{ const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_CATEGORY_META"][cat]; const cnt = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["countUnlockedInCategory"])(constellation, cat); const total = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_PERKS"].filter((p)=>p.category === cat).length; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-md bg-black/25 border border-white/5 px-1.5 py-1 flex items-center gap-1", style: cnt > 0 ? { borderColor: `${meta.hex}40` } : undefined, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "inline-block h-1.5 w-1.5 rounded-full flex-shrink-0", style: { background: meta.hex, boxShadow: cnt > 0 ? `0 0 4px ${meta.hex}` : "none" } }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 287, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground truncate", children: meta.name }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 291, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "ml-auto font-mono", style: { color: cnt > 0 ? meta.hex : "rgba(148,163,184,0.5)" }, children: [ cnt, "/", total ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 292, columnNumber: 15 }, this) ] }, cat, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 282, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 276, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 min-h-0 overflow-y-auto pr-1 echo-scrollbar", children: constellation.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-md bg-black/25 border border-dashed border-white/10 px-3 py-3 text-center text-[11px] text-muted-foreground/70", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "mb-1 text-fuchsia-300/80", children: "✦" }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 304, columnNumber: 13 }, this), "尚未解锁任何天赋。", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("br", {}, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 305, columnNumber: 22 }, this), "累积接触进度至 100%,发起「飞升」即可在 3 个随机天赋中选 1。" ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 303, columnNumber: 11 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex flex-col gap-1", children: constellation.map((id)=>{ const perk = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getPerk"])(id); if (!perk) return null; const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_CATEGORY_META"][perk.category]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-md bg-black/25 border px-2 py-1.5 flex items-center gap-2 text-[11px]", style: { borderColor: `${meta.hex}30` }, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "inline-block h-2 w-2 rounded-full flex-shrink-0", style: { background: meta.hex, boxShadow: `0 0 6px ${meta.hex}` } }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 320, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex-1 min-w-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-foreground truncate", children: perk.name }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 325, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-muted-foreground/70 text-[10px] truncate", children: perk.desc }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 326, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 324, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[9px] text-muted-foreground/50 font-mono", children: meta.name }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 328, columnNumber: 19 }, this) ] }, id, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 315, columnNumber: 17 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 309, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 301, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ConstellationPanel.tsx", lineNumber: 230, columnNumber: 5 }, this); } _s(ConstellationPanel, "ZmbIWV+yXfYQdnOsS7ih+bHN+yg=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = ConstellationPanel; var _c; __turbopack_context__.k.register(_c, "ConstellationPanel"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/BeaconPanel.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "BeaconPanel", ()=>BeaconPanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 深空信标面板 // v0.5:每日挑战 + 本地排行榜 // v0.8:周挑战 + 信标链(连续完成奖励) // v0.8.2:限时挑战(每 4 小时刷新,amber 主题) // v0.8.2 P2/#4:本地/全球双榜(云排行榜 mini-service 端口 3030) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/beacon.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/progress.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$radio$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Radio$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/radio.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/clock.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/trophy.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$award$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Award$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/award.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$crown$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Crown$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/crown.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$medal$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Medal$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/medal.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$link$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Link2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/link-2.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$flame$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Flame$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/flame.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/zap.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hourglass$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Hourglass$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/hourglass.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/refresh-cw.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$globe$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Globe$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/globe.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$wifi$2d$off$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__WifiOff$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/wifi-off.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$loader$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/loader-circle.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; ; ; ; ; const DIFFICULTY_ORDER = [ "routine", "anomaly", "singular" ]; function rankBadge(rank) { if (rank === 0) return { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$crown$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Crown$3e$__["Crown"], color: "#fbbf24", label: "1st" }; if (rank === 1) return { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$medal$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Medal$3e$__["Medal"], color: "#cbd5e1", label: "2nd" }; if (rank === 2) return { icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$award$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Award$3e$__["Award"], color: "#f97316", label: "3rd" }; return null; } function BeaconPanel() { _s(); const grantBeaconReward = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "BeaconPanel.useGameStore[grantBeaconReward]": (s)=>s.grantBeaconReward }["BeaconPanel.useGameStore[grantBeaconReward]"]); const claimWeeklyBeacon = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "BeaconPanel.useGameStore[claimWeeklyBeacon]": (s)=>s.claimWeeklyBeacon }["BeaconPanel.useGameStore[claimWeeklyBeacon]"]); const claimTimedBeacon = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "BeaconPanel.useGameStore[claimTimedBeacon]": (s)=>s.claimTimedBeacon }["BeaconPanel.useGameStore[claimTimedBeacon]"]); const claimChainReward = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "BeaconPanel.useGameStore[claimChainReward]": (s)=>s.claimChainReward }["BeaconPanel.useGameStore[claimChainReward]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); const [challenge, setChallenge] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [progress, setProgress] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [timedChallenge, setTimedChallenge] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [timedProgress, setTimedProgress] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [weeklyChallenge, setWeeklyChallenge] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [weeklyProgress, setWeeklyProgress] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [chainState, setChainState] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [leaderboard, setLeaderboard] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]); const [dayCountdown, setDayCountdown] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("00:00:00"); const [timedCountdown, setTimedCountdown] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("00:00:00"); const [weekCountdown, setWeekCountdown] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("00:00:00"); const [now, setNow] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(Date.now()); // 云排行榜状态(v0.8.2 P2/#4) const [lbTab, setLbTab] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])("local"); const [cloudEntries, setCloudEntries] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]); const [cloudLoading, setCloudLoading] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [cloudError, setCloudError] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [cloudFetched, setCloudFetched] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [mySubmitTs, setMySubmitTs] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(0); const cloudFetchingRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(false); // 初始化 + 每秒刷新(进度 + 倒计时) (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "BeaconPanel.useEffect": ()=>{ setChallenge((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateDailyChallenge"])()); setProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadDailyProgress"])()); setTimedChallenge((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateTimedChallenge"])()); setTimedProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadTimedProgress"])()); setWeeklyChallenge((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateWeeklyChallenge"])()); setWeeklyProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadWeeklyProgress"])()); setChainState((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadChainState"])()); setLeaderboard((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLeaderboard"])()); const id = setInterval({ "BeaconPanel.useEffect.id": ()=>{ setNow(Date.now()); setProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadDailyProgress"])()); setTimedProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadTimedProgress"])()); setWeeklyProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadWeeklyProgress"])()); setChainState((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadChainState"])()); setChallenge({ "BeaconPanel.useEffect.id": (c)=>c ?? (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateDailyChallenge"])() }["BeaconPanel.useEffect.id"]); setTimedChallenge({ "BeaconPanel.useEffect.id": (c)=>c ?? (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateTimedChallenge"])() }["BeaconPanel.useEffect.id"]); setWeeklyChallenge({ "BeaconPanel.useEffect.id": (c)=>c ?? (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["generateWeeklyChallenge"])() }["BeaconPanel.useEffect.id"]); } }["BeaconPanel.useEffect.id"], 1000); return ({ "BeaconPanel.useEffect": ()=>clearInterval(id) })["BeaconPanel.useEffect"]; } }["BeaconPanel.useEffect"], []); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "BeaconPanel.useEffect": ()=>{ setDayCountdown((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatCountdown"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["msUntilNextDay"])(new Date(now)))); setTimedCountdown((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatCountdown"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["msUntilNextTimedSlot"])(new Date(now)))); setWeekCountdown((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatCountdown"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["msUntilNextWeek"])(new Date(now)))); } }["BeaconPanel.useEffect"], [ now ]); // 初始化:读取本地保存的"上次提交时间戳"(用于全球榜高亮我的记录) (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "BeaconPanel.useEffect": ()=>{ setMySubmitTs((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLastCloudSubmitTimestamp"])()); } }["BeaconPanel.useEffect"], []); // 拉取全球排行榜 const refreshCloudLeaderboard = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "BeaconPanel.useCallback[refreshCloudLeaderboard]": async ()=>{ if (cloudFetchingRef.current) return; cloudFetchingRef.current = true; setCloudLoading(true); setCloudError(null); try { const entries = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["fetchCloudLeaderboard"])(); setCloudEntries(entries); setCloudFetched(true); setMySubmitTs((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLastCloudSubmitTimestamp"])()); if (entries.length === 0) { setCloudError("尚无全球记录,成为首位登顶者!"); } } catch { setCloudError("全球榜连接失败,请稍后重试"); } finally{ setCloudLoading(false); cloudFetchingRef.current = false; } } }["BeaconPanel.useCallback[refreshCloudLeaderboard]"], []); // 切到全球 tab 时自动拉取一次(如已拉取过则不强制) (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "BeaconPanel.useEffect": ()=>{ if (lbTab === "global" && !cloudFetched && !cloudLoading) { void refreshCloudLeaderboard(); } } }["BeaconPanel.useEffect"], [ lbTab, cloudFetched, cloudLoading, refreshCloudLeaderboard ]); const handleClaimDaily = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "BeaconPanel.useCallback[handleClaimDaily]": ()=>{ if (!challenge || !progress) return; if (progress.completedAt === null || progress.claimed) return; const res = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["claimBeaconReward"])(challenge, progress); setLeaderboard(res.leaderboard); setProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadDailyProgress"])()); // 发放奖励到游戏状态 grantBeaconReward(res.rewardInsight, res.rewardContact); (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("achievement"); toast({ title: "✦ 每日信标奖励已领取", description: `+${res.rewardInsight} 洞见 · +${res.rewardContact.toFixed(1)} 接触 · 得分 ${res.score}` }); // 异步提交到云排行榜(失败静默,不影响本地) if (res.entry) { void (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["submitCloudScore"])(res.entry).then({ "BeaconPanel.useCallback[handleClaimDaily]": (rank)=>{ if (rank >= 1) { setMySubmitTs(res.entry.timestamp); // 若用户在全球 tab,自动刷新 if (lbTab === "global") { void refreshCloudLeaderboard(); } } } }["BeaconPanel.useCallback[handleClaimDaily]"]); } } }["BeaconPanel.useCallback[handleClaimDaily]"], [ challenge, progress, toast, grantBeaconReward, lbTab, refreshCloudLeaderboard ]); const handleClaimTimed = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "BeaconPanel.useCallback[handleClaimTimed]": ()=>{ if (!timedChallenge || !timedProgress) return; if (timedProgress.completedAt === null || timedProgress.claimed) return; const res = claimTimedBeacon(); setLeaderboard((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLeaderboard"])()); setTimedProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadTimedProgress"])()); if (res.rewardInsight > 0 || res.rewardContact > 0) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("achievement"); toast({ title: "✦ 限时挑战奖励已领取", description: `+${res.rewardInsight} 洞见 · +${res.rewardContact.toFixed(1)} 接触 · 得分 ${res.score}` }); // 异步刷新云榜(claimTimedBeacon 已在 gameStore 内异步提交到云端) setMySubmitTs((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLastCloudSubmitTimestamp"])()); if (lbTab === "global") { void refreshCloudLeaderboard(); } } } }["BeaconPanel.useCallback[handleClaimTimed]"], [ timedChallenge, timedProgress, toast, claimTimedBeacon, lbTab, refreshCloudLeaderboard ]); const handleClaimWeekly = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "BeaconPanel.useCallback[handleClaimWeekly]": ()=>{ if (!weeklyChallenge || !weeklyProgress) return; if (weeklyProgress.completedAt === null || weeklyProgress.claimed) return; const res = claimWeeklyBeacon(); setLeaderboard((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLeaderboard"])()); setWeeklyProgress((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadWeeklyProgress"])()); if (res.rewardInsight > 0 || res.rewardContact > 0) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("achievement"); toast({ title: "✦ 周挑战奖励已领取", description: `+${res.rewardInsight} 洞见 · +${res.rewardContact.toFixed(1)} 接触 · 得分 ${res.score}` }); // 异步刷新云榜(claimWeeklyBeacon 已在 gameStore 内异步提交到云端) setMySubmitTs((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadLastCloudSubmitTimestamp"])()); if (lbTab === "global") { void refreshCloudLeaderboard(); } } } }["BeaconPanel.useCallback[handleClaimWeekly]"], [ weeklyChallenge, weeklyProgress, toast, claimWeeklyBeacon, lbTab, refreshCloudLeaderboard ]); const handleClaimChain = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "BeaconPanel.useCallback[handleClaimChain]": (milestone)=>{ const reward = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_CHAIN_REWARDS"].find({ "BeaconPanel.useCallback[handleClaimChain].reward": (r)=>r.milestone === milestone }["BeaconPanel.useCallback[handleClaimChain].reward"]); const res = claimChainReward(milestone); setChainState((0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["loadChainState"])()); if (res.ok) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("achievement"); toast({ title: `✦ ${res.label || reward?.label || "里程碑"} 已领取`, description: `+${res.rewardInsight} 洞见 · +${res.rewardContact.toFixed(1)} 接触` }); } } }["BeaconPanel.useCallback[handleClaimChain]"], [ toast, claimChainReward ]); if (!challenge || !progress || !timedChallenge || !timedProgress || !weeklyChallenge || !weeklyProgress || !chainState) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-center h-full text-xs text-muted-foreground/60", children: "正在校准深空信标…" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 269, columnNumber: 7 }, this); } const diffMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][challenge.difficulty]; const typeMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_TYPE_META"][challenge.type]; const pct = Math.min(100, progress.progress / challenge.goal * 100); const isCompleted = progress.completedAt !== null; const isClaimed = progress.claimed; const canClaim = isCompleted && !isClaimed; // 限时挑战派生量 const tDiffMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][timedChallenge.difficulty]; const tTypeMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_TYPE_META"][timedChallenge.type]; const tPct = Math.min(100, timedProgress.progress / timedChallenge.goal * 100); const tCompleted = timedProgress.completedAt !== null; const tClaimed = timedProgress.claimed; const tCanClaim = tCompleted && !tClaimed; // 周挑战派生量 const wDiffMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][weeklyChallenge.difficulty]; const wTypeMeta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_TYPE_META"][weeklyChallenge.type]; const wPct = Math.min(100, weeklyProgress.progress / weeklyChallenge.goal * 100); const wCompleted = weeklyProgress.completedAt !== null; const wClaimed = weeklyProgress.claimed; const wCanClaim = wCompleted && !wClaimed; // 信标链派生量 const chainProgress = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getChainProgress"])(chainState.currentStreak); const nextMilestone = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getNextMilestone"])(chainState.currentStreak); const todayKey = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getTodayKey"])(); const completedToday = chainState.lastCompletedDateKey === todayKey; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex flex-col gap-2.5 h-full overflow-y-auto echo-scroll pr-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "12f5fcaad97b9273", dynamic: [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ], children: `.echo-scroll::-webkit-scrollbar{width:4px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.echo-scroll::-webkit-scrollbar-track{background:0 0}@keyframes beacon-pulse-ring{0%{opacity:.8;transform:scale(.8)}to{opacity:0;transform:scale(2.2)}}@keyframes beacon-glow{0%,to{box-shadow:0 0 18px ${diffMeta.glow},inset 0 0 12px ${diffMeta.glow}}50%{box-shadow:0 0 32px ${diffMeta.glow},inset 0 0 20px ${diffMeta.glow}}}@keyframes weekly-glow{0%,to{box-shadow:0 0 18px #e879f959,inset 0 0 12px #e879f940}50%{box-shadow:0 0 32px #e879f980,inset 0 0 20px #e879f959}}@keyframes timed-glow{0%,to{box-shadow:0 0 18px #fbbf2466,inset 0 0 12px #fbbf2440}50%{box-shadow:0 0 30px #fbbf248c,inset 0 0 20px #fbbf2459}}@keyframes timed-urgent{0%,to{box-shadow:0 0 18px #f43f5e80,inset 0 0 12px #f43f5e4d}50%{box-shadow:0 0 34px #f43f5eb3,inset 0 0 22px #f43f5e66}}@keyframes chain-milestone-pulse{0%,to{transform:scale(1);box-shadow:0 0 #fb71858c}50%{transform:scale(1.06);box-shadow:0 0 0 8px #fb718500}}.chain-milestone-reachable{animation:1.8s ease-in-out infinite chain-milestone-pulse}@keyframes chain-streak-flux{0%,to{background-position:0%}50%{background-position:100%}}.chain-streak-text{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#fbbf24,#fb7185,#fbbf24) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;animation:4s ease-in-out infinite chain-streak-flux}` }, void 0, false, void 0, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-sm font-semibold flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$radio$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Radio$3e$__["Radio"], { className: "h-4 w-4 text-fuchsia-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 354, columnNumber: 11 }, this), "深空信标" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 353, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1 text-[10px] text-muted-foreground/70", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { className: "h-3 w-3" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 358, columnNumber: 11 }, this), "次日重置", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-fuchsia-300/90", children: dayCountdown }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 360, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 357, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 352, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: `${diffMeta.color}55`, background: `linear-gradient(135deg, ${diffMeta.color}1f, rgba(0,0,0,0.45))`, animation: isCompleted ? "none" : "beacon-glow 3s ease-in-out infinite" }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "relative rounded-xl border p-3 overflow-hidden", children: [ !isCompleted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { border: `1.5px solid ${diffMeta.color}`, animation: "beacon-pulse-ring 2.5s ease-out infinite" }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 376, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { border: `1.5px solid ${diffMeta.color}`, animation: "beacon-pulse-ring 2.5s ease-out infinite 1.25s" }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 383, columnNumber: 13 }, this) ] }, void 0, true), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "relative", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5 mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: `${diffMeta.color}22`, color: diffMeta.color, border: `1px solid ${diffMeta.color}55` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: diffMeta.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 400, columnNumber: 15 }, this), diffMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 396, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10", children: [ typeMeta.icon, " ", typeMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 403, columnNumber: 13 }, this), isCompleted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-300 border border-emerald-500/40 flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 408, columnNumber: 17 }, this), " 已完成" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 407, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 395, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { style: { color: diffMeta.color, textShadow: `0 0 10px ${diffMeta.glow}` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-sm font-semibold mb-1", children: challenge.title }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 414, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[11px] text-muted-foreground/80 leading-relaxed mb-2.5", children: challenge.desc }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 417, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/70", children: "进度" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 424, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: diffMeta.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[11px] font-mono font-semibold", children: [ Math.min(progress.progress, challenge.goal), " / ", challenge.goal, " ", typeMeta.unit ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 425, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 423, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: pct, className: "h-2 bg-black/40", style: { ["--progress-color"]: diffMeta.color } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 429, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 422, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-2 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "奖励:" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 441, columnNumber: 15 }, this), challenge.rewardInsight > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-amber-300 font-mono", children: [ "+", (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(challenge.rewardInsight), "洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 443, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-fuchsia-300 font-mono", children: [ "+", challenge.rewardContact.toFixed(1), "接触" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 445, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 440, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleClaimDaily, disabled: !canClaim, size: "sm", className: "h-7 px-3 text-[11px] border-0", style: { background: canClaim ? `linear-gradient(90deg, ${diffMeta.color}, ${diffMeta.color}cc)` : `${diffMeta.color}1a`, color: canClaim ? "#022c22" : `${diffMeta.color}99` }, children: isClaimed ? "已领取" : canClaim ? "领取奖励" : isCompleted ? "已领取" : "进行中…" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 447, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 439, columnNumber: 11 }, this), isCompleted && progress.durationSec > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mt-1.5 text-[10px] text-muted-foreground/50 text-center", children: [ "完成用时 ", Math.floor(progress.durationSec / 60), "分", progress.durationSec % 60, "秒" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 465, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 393, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 365, columnNumber: 7 }, this), (()=>{ // 距离时段结束 < 30 分钟时进入"紧急"状态(rose 脉冲) const msLeft = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["msUntilNextTimedSlot"])(new Date(now)); const urgent = msLeft < 30 * 60 * 1000 && !tCompleted; const glowAnim = tCompleted ? "none" : urgent ? "timed-urgent 1.5s ease-in-out infinite" : "timed-glow 3s ease-in-out infinite"; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: urgent ? "rgba(244,63,94,0.5)" : "rgba(251,191,36,0.4)", background: urgent ? "linear-gradient(135deg, rgba(244,63,94,0.12), rgba(251,191,36,0.08), rgba(0,0,0,0.45))" : "linear-gradient(135deg, rgba(251,191,36,0.14), rgba(0,0,0,0.45))", animation: glowAnim }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "relative rounded-xl border p-3 overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$hourglass$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Hourglass$3e$__["Hourglass"], { className: `h-3.5 w-3.5 ${urgent ? "text-rose-400" : "text-amber-400"}` }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 496, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `text-xs font-semibold ${urgent ? "text-rose-200" : "text-amber-200"}`, children: "限时挑战 · TIMED" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 497, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 495, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1 text-[9px] text-muted-foreground/70", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-amber-300/70", children: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getTimedSlotKey"])().split("_").slice(1).join(" ") }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 502, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 505, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `font-mono ${urgent ? "text-rose-300" : "text-amber-300/90"}`, children: timedCountdown }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 506, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 501, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 494, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5 mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: `${tDiffMeta.color}22`, color: tDiffMeta.color, border: `1px solid ${tDiffMeta.color}55` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: tDiffMeta.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 518, columnNumber: 17 }, this), tDiffMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 514, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10", children: [ tTypeMeta.icon, " ", tTypeMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 521, columnNumber: 15 }, this), tCompleted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-300 border border-emerald-500/40 flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 526, columnNumber: 19 }, this), " 已完成" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 525, columnNumber: 17 }, this), urgent && !tCompleted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-rose-500/20 text-rose-300 border border-rose-500/40 flex items-center gap-1 animate-pulse", children: "即将结束" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 530, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 513, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { style: { color: tDiffMeta.color, textShadow: `0 0 10px ${tDiffMeta.glow}` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-sm font-semibold mb-1", children: timedChallenge.title }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 537, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/80 leading-relaxed mb-2", children: timedChallenge.desc }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 543, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/70", children: "进度" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 550, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: tDiffMeta.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[11px] font-mono font-semibold", children: [ Math.min(timedProgress.progress, timedChallenge.goal), " / ", timedChallenge.goal, " ", tTypeMeta.unit ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 551, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 549, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: tPct, className: "h-2 bg-black/40", style: { ["--progress-color"]: urgent ? "#f43f5e" : tDiffMeta.color } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 555, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 548, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "奖励:" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 567, columnNumber: 17 }, this), timedChallenge.rewardInsight > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-amber-300 font-mono", children: [ "+", (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(timedChallenge.rewardInsight), "洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 569, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-fuchsia-300 font-mono", children: [ "+", timedChallenge.rewardContact.toFixed(1), "接触" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 573, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 566, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleClaimTimed, disabled: !tCanClaim, size: "sm", className: "h-7 px-3 text-[11px] border-0", style: { background: tCanClaim ? `linear-gradient(90deg, #34d399, #34d399cc)` : "rgba(251,191,36,0.10)", color: tCanClaim ? "#022c22" : "rgba(251,191,36,0.55)" }, children: tClaimed ? "已领取" : tCanClaim ? "领取奖励" : tCompleted ? "已领取" : "进行中…" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 577, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 565, columnNumber: 13 }, this), tCompleted && timedProgress.durationSec > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mt-1.5 text-[10px] text-muted-foreground/50 text-center", children: [ "完成用时 ", Math.floor(timedProgress.durationSec / 60), "分", timedProgress.durationSec % 60, "秒" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 602, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 483, columnNumber: 11 }, this); })(), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "grid grid-cols-1 lg:grid-cols-2 gap-2.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: "rgba(232,121,249,0.4)", background: `linear-gradient(135deg, rgba(232,121,249,0.12), rgba(0,0,0,0.45))`, animation: wCompleted ? "none" : "weekly-glow 3.5s ease-in-out infinite" }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "relative rounded-xl border p-3 overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], { className: "h-3.5 w-3.5 text-fuchsia-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 624, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-xs font-semibold text-fuchsia-200", children: "周挑战 · WEEKLY" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 625, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 623, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1 text-[9px] text-muted-foreground/70", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-fuchsia-300/80", children: weeklyChallenge.weekKey }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 630, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 633, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-fuchsia-300/90", children: weekCountdown }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 634, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 629, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 622, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5 mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { background: `${wDiffMeta.color}22`, color: wDiffMeta.color, border: `1px solid ${wDiffMeta.color}55` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: wDiffMeta.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 644, columnNumber: 15 }, this), wDiffMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 640, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10", children: [ wTypeMeta.icon, " ", wTypeMeta.label ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 647, columnNumber: 13 }, this), wCompleted && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-300 border border-emerald-500/40 flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 652, columnNumber: 17 }, this), " 已完成" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 651, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 639, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h4", { style: { color: wDiffMeta.color, textShadow: `0 0 10px ${wDiffMeta.glow}` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-sm font-semibold mb-1", children: weeklyChallenge.title }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 658, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/80 leading-relaxed mb-2", children: weeklyChallenge.desc }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 664, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/70", children: "进度" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 671, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: wDiffMeta.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[11px] font-mono font-semibold", children: [ Math.min(weeklyProgress.progress, weeklyChallenge.goal), " / ", weeklyChallenge.goal, " ", wTypeMeta.unit ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 672, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 670, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: wPct, className: "h-2 bg-black/40", style: { ["--progress-color"]: wDiffMeta.color } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 676, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 669, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "奖励:" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 688, columnNumber: 15 }, this), weeklyChallenge.rewardInsight > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-amber-300 font-mono", children: [ "+", (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(weeklyChallenge.rewardInsight), "洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 690, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-fuchsia-300 font-mono", children: [ "+", weeklyChallenge.rewardContact.toFixed(1), "接触" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 694, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 687, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: handleClaimWeekly, disabled: !wCanClaim, size: "sm", className: "h-7 px-3 text-[11px] border-0", style: { background: wCanClaim ? `linear-gradient(90deg, #34d399, #34d399cc)` : "rgba(232,121,249,0.10)", color: wCanClaim ? "#022c22" : "rgba(232,121,249,0.55)" }, children: wClaimed ? "已领取" : wCanClaim ? "领取奖励" : wCompleted ? "已领取" : "进行中…" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 698, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 686, columnNumber: 11 }, this), wCompleted && weeklyProgress.durationSec > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mt-1.5 text-[10px] text-muted-foreground/50 text-center", children: [ "完成用时 ", Math.floor(weeklyProgress.durationSec / 60), "分", weeklyProgress.durationSec % 60, "秒" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 723, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 613, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: "rgba(251,191,36,0.35)", background: `linear-gradient(135deg, rgba(251,191,36,0.10), rgba(251,113,133,0.10), rgba(0,0,0,0.4))` }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "relative rounded-xl border p-3 overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$link$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Link2$3e$__["Link2"], { className: "h-3.5 w-3.5 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 740, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-xs font-semibold text-amber-200", children: "信标链 · CHAIN" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 741, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 739, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-baseline gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$flame$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Flame$3e$__["Flame"], { className: "h-3 w-3 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 746, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/60", children: "连续" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 747, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "chain-streak-text text-2xl font-bold font-mono leading-none", children: chainState.currentStreak }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 748, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/60", children: "天" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 751, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 745, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 738, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-2 flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/70", children: completedToday ? "今日已贡献" : "今日尚未完成日挑战" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 757, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `text-[10px] font-mono px-1.5 py-0.5 rounded border ${completedToday ? "bg-emerald-500/15 text-emerald-300 border-emerald-500/30" : "bg-white/5 text-muted-foreground/70 border-white/10"}`, children: completedToday ? "✓ 已记录" : "○ 待完成" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 762, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 756, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-2 relative", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "absolute top-6 left-[12.5%] right-[12.5%] h-[2px] bg-white/10" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 776, columnNumber: 13 }, this), (()=>{ // 节点圆心水平位置(百分比) const MILESTONE_POS = { 0: 12.5, 3: 12.5, 7: 37.5, 14: 62.5, 30: 87.5 }; const prevPos = MILESTONE_POS[chainProgress.prev] ?? 12.5; const nextPos = chainProgress.next !== null ? MILESTONE_POS[chainProgress.next] ?? 87.5 : 87.5; const pct = chainProgress.progressPct / 100; const activeEndPos = prevPos + (nextPos - prevPos) * pct; const widthPct = Math.max(0, activeEndPos - 12.5); if (widthPct <= 0) return null; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { left: "12.5%", width: `${widthPct}%`, background: "linear-gradient(90deg, #fbbf24, #fb7185)", boxShadow: "0 0 8px rgba(251,113,133,0.5)" }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "absolute top-6 h-[2px]" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 798, columnNumber: 17 }, this); })(), __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_CHAIN_MILESTONES"].map((m)=>{ const reward = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_CHAIN_REWARDS"].find((r)=>r.milestone === m); const claimed = chainState.milestonesClaimed.includes(m); const reachable = chainState.currentStreak >= m && !claimed; const inProgress = chainState.currentStreak > 0 && nextMilestone === m; // 节点配色 let nodeBg = "rgba(255,255,255,0.05)"; let nodeBorder = "rgba(255,255,255,0.15)"; let textColor = "rgba(255,255,255,0.4)"; if (claimed) { nodeBg = "rgba(52,211,153,0.25)"; nodeBorder = "#34d399"; textColor = "#34d399"; } else if (reachable) { nodeBg = "rgba(251,113,133,0.20)"; nodeBorder = "#fb7185"; textColor = "#fb7185"; } else if (inProgress) { nodeBg = "rgba(251,191,36,0.20)"; nodeBorder = "#fbbf24"; textColor = "#fbbf24"; } return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex flex-col items-center gap-1 z-10 flex-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: nodeBg, borderColor: nodeBorder, color: textColor }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `w-12 h-12 rounded-full flex items-center justify-center font-mono font-bold text-sm border-2 ${reachable ? "chain-milestone-reachable" : ""}`, children: claimed ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-4 w-4" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 851, columnNumber: 23 }, this) : m }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 840, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: textColor }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] text-center leading-tight", children: reward?.label }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 856, columnNumber: 19 }, this), claimed ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] text-emerald-400/80 font-mono", children: "已领" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 863, columnNumber: 21 }, this) : reachable ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { onClick: ()=>handleClaimChain(m), size: "sm", className: "h-5 px-2 text-[9px] py-0 border-0", style: { background: "linear-gradient(90deg, #fb7185, #f43f5e)", color: "#1c0608" }, children: "领取" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 867, columnNumber: 21 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] text-muted-foreground/40 font-mono", children: [ "+", reward?.rewardInsight, "洞" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 880, columnNumber: 21 }, this) ] }, m, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 836, columnNumber: 17 }, this); }) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 774, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] text-muted-foreground/70", children: chainProgress.next === null ? "已通关全部里程碑" : `下一目标:${chainProgress.next} 天` }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 892, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[10px] font-mono text-amber-300", children: [ chainProgress.current, chainProgress.next !== null && ` / ${chainProgress.next}`, " 天" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 897, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 891, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$progress$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Progress"], { value: chainProgress.progressPct, className: "h-1.5 bg-black/40", style: { ["--progress-color"]: "#fbbf24" } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 902, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 890, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between gap-2 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "最长" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 914, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-amber-300", children: [ chainState.longestStreak, "天" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 915, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 913, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "累计" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 920, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-rose-300", children: [ chainState.totalCompletions, "次" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 921, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 919, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/60", children: "续命" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 926, columnNumber: 15 }, this), chainState.graceUsed >= 1 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-rose-400/80", children: "已用" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 928, columnNumber: 17 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono text-emerald-400/80", children: "可用" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 930, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 925, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 912, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 730, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 611, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "rounded-xl border border-white/10 bg-black/30 p-2.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-between gap-2 mb-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__["Trophy"], { className: "h-3.5 w-3.5 text-amber-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 942, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-xs font-semibold", children: "深空排行榜" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 943, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 941, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-0.5 p-0.5 rounded-lg bg-black/40 border border-white/10", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { type: "button", onClick: ()=>setLbTab("local"), "aria-pressed": lbTab === "local", className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-mono transition-colors ${lbTab === "local" ? "bg-amber-500/25 text-amber-300 border border-amber-500/40" : "text-muted-foreground/60 hover:text-muted-foreground border border-transparent"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__["Trophy"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 958, columnNumber: 17 }, this), "本地" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 948, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { type: "button", onClick: ()=>setLbTab("global"), "aria-pressed": lbTab === "global", className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `flex items-center gap-1 px-2 py-0.5 rounded-md text-[10px] font-mono transition-colors ${lbTab === "global" ? "bg-emerald-500/25 text-emerald-300 border border-emerald-500/40" : "text-muted-foreground/60 hover:text-muted-foreground border border-transparent"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$globe$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Globe$3e$__["Globe"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 971, columnNumber: 17 }, this), "全球" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 961, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 947, columnNumber: 13 }, this), lbTab === "global" && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { type: "button", onClick: ()=>void refreshCloudLeaderboard(), disabled: cloudLoading, "aria-label": "刷新全球榜", title: "刷新全球榜", className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "p-1 rounded-md text-muted-foreground/70 hover:text-emerald-300 hover:bg-emerald-500/10 disabled:opacity-40 disabled:cursor-not-allowed transition-colors", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__["RefreshCw"], { className: `h-3 w-3 ${cloudLoading ? "animate-spin" : ""}` }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 985, columnNumber: 17 }, this) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 977, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 945, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 940, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "mb-1.5 text-[10px] text-muted-foreground/50 flex items-center gap-2", children: lbTab === "local" ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: [ "本机 Top ", leaderboard.length || 0, " · 离线可用" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 996, columnNumber: 13 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: [ "全球 Top ", cloudEntries.length || 0 ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 999, columnNumber: 15 }, this), cloudFetched && !cloudLoading && cloudEntries.length > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-emerald-400/60", children: "· 已同步" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1001, columnNumber: 17 }, this), cloudLoading && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-amber-400/70 flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$loader$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__["Loader2"], { className: "h-2.5 w-2.5 animate-spin" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1005, columnNumber: 19 }, this), "同步中…" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1004, columnNumber: 17 }, this) ] }, void 0, true) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 994, columnNumber: 9 }, this), lbTab === "local" && (leaderboard.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-center py-4 text-[11px] text-muted-foreground/40", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__["Trophy"], { className: "h-6 w-6 mx-auto mb-1 opacity-30" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1017, columnNumber: 15 }, this), "尚无记录。完成限时、每日或本周信标即可登榜。" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1016, columnNumber: 13 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "space-y-0.5 max-h-[200px] overflow-y-auto echo-scroll", children: leaderboard.map((entry, i)=>{ const rb = rankBadge(i); const eDiff = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][entry.difficulty]; const eType = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_TYPE_META"][entry.challenge]; const isMine = entry.dateKey === (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getTodayKey"])() || entry.dateKey === (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getWeekKey"])() || entry.dateKey === (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getTimedSlotKey"])(); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `flex items-center gap-2 px-2 py-1 rounded-lg text-[11px] ${entry.isWeekly ? "bg-fuchsia-500/10 border border-fuchsia-500/20" : entry.isTimed ? "bg-amber-500/10 border border-amber-500/20" : isMine ? "bg-fuchsia-500/10 border border-fuchsia-500/20" : "hover:bg-white/5"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "w-6 flex items-center justify-center", children: rb ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(rb.icon, { className: "h-3.5 w-3.5", style: { color: rb.color } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1045, columnNumber: 25 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/50 font-mono", children: i + 1 }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1047, columnNumber: 25 }, this) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1043, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1 flex-1 min-w-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: eDiff.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono", children: eDiff.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1051, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/80 truncate", children: eType.label }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1052, columnNumber: 23 }, this), entry.isWeekly && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] font-mono px-1 rounded bg-fuchsia-500/20 text-fuchsia-300 border border-fuchsia-500/40", children: "WEEK" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1054, columnNumber: 25 }, this), entry.isTimed && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] font-mono px-1 rounded bg-amber-500/20 text-amber-300 border border-amber-500/40", children: "TIMED" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1059, columnNumber: 25 }, this), entry.progress >= 1 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-emerald-400/70", children: "✓" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1063, columnNumber: 47 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1050, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/50 font-mono text-[10px] w-16 text-right", children: [ Math.floor(entry.durationSec / 60), "m", entry.durationSec % 60, "s" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1065, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: eDiff.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono font-semibold w-12 text-right", children: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(entry.score) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1068, columnNumber: 21 }, this) ] }, `local-${entry.timestamp}-${i}`, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1031, columnNumber: 19 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1021, columnNumber: 13 }, this)), lbTab === "global" && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: cloudLoading && cloudEntries.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-center py-4 text-[11px] text-muted-foreground/60 flex items-center justify-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$loader$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__["Loader2"], { className: "h-3.5 w-3.5 animate-spin text-emerald-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1082, columnNumber: 17 }, this), "正在拉取全球榜…" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1081, columnNumber: 15 }, this) : cloudEntries.length === 0 ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-center py-4 text-[11px] text-muted-foreground/40", children: cloudError ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$wifi$2d$off$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__WifiOff$3e$__["WifiOff"], { className: "h-6 w-6 mx-auto mb-1 opacity-40 text-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1089, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-rose-300/70", children: cloudError }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1090, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { type: "button", onClick: ()=>void refreshCloudLeaderboard(), className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "block mx-auto mt-2 text-[10px] text-emerald-400/80 hover:text-emerald-300 underline-offset-2 hover:underline", children: "重试" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1091, columnNumber: 21 }, this) ] }, void 0, true) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$globe$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Globe$3e$__["Globe"], { className: "h-6 w-6 mx-auto mb-1 opacity-30 text-emerald-400" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1101, columnNumber: 21 }, this), "尚无全球记录。完成挑战并领取即可登顶全球榜!" ] }, void 0, true) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1086, columnNumber: 15 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "space-y-0.5 max-h-[200px] overflow-y-auto echo-scroll", children: cloudEntries.map((entry, i)=>{ const rb = rankBadge(i); const eDiff = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][entry.difficulty] ?? __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"].routine; const eType = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_TYPE_META"][entry.challenge] ?? { label: entry.challenge, icon: "·", unit: "" }; // 高亮"我的"记录:通过 timestamp 匹配本机最后一次成功提交 const isMine = mySubmitTs > 0 && entry.timestamp === mySubmitTs; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `flex items-center gap-2 px-2 py-1 rounded-lg text-[11px] ${isMine ? "bg-emerald-500/15 border border-emerald-500/40 shadow-[0_0_12px_rgba(52,211,153,0.25)]" : entry.isWeekly ? "bg-fuchsia-500/10 border border-fuchsia-500/20" : entry.isTimed ? "bg-amber-500/10 border border-amber-500/20" : "hover:bg-white/5"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "w-6 flex items-center justify-center", children: rb ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(rb.icon, { className: "h-3.5 w-3.5", style: { color: rb.color } }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1129, columnNumber: 27 }, this) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + `font-mono ${isMine ? "text-emerald-300 font-bold" : "text-muted-foreground/50"}`, children: i + 1 }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1131, columnNumber: 27 }, this) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1127, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1 flex-1 min-w-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: eDiff.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono", children: eDiff.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1137, columnNumber: 25 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/80 truncate", children: eType.label }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1138, columnNumber: 25 }, this), entry.isWeekly && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] font-mono px-1 rounded bg-fuchsia-500/20 text-fuchsia-300 border border-fuchsia-500/40", children: "WEEK" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1140, columnNumber: 27 }, this), entry.isTimed && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] font-mono px-1 rounded bg-amber-500/20 text-amber-300 border border-amber-500/40", children: "TIMED" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1145, columnNumber: 27 }, this), isMine && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-[9px] font-mono px-1 rounded bg-emerald-500/25 text-emerald-200 border border-emerald-500/50", children: "YOU" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1150, columnNumber: 27 }, this), entry.progress >= 1 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-emerald-400/70", children: "✓" }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1154, columnNumber: 49 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1136, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "text-muted-foreground/50 font-mono text-[10px] w-16 text-right", children: [ Math.floor(entry.durationSec / 60), "m", entry.durationSec % 60, "s" ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1156, columnNumber: 23 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: isMine ? "#34d399" : eDiff.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "font-mono font-semibold w-12 text-right", children: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["formatNum"])(entry.score) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1159, columnNumber: 23 }, this) ] }, `global-${entry.timestamp}-${i}`, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1115, columnNumber: 21 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1107, columnNumber: 15 }, this) }, void 0, false) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 938, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center justify-center gap-3 text-[9px] text-muted-foreground/50", children: DIFFICULTY_ORDER.map((d)=>{ const m = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$beacon$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["BEACON_DIFFICULTY"][d]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]) + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: m.color }, className: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].dynamic([ [ "12f5fcaad97b9273", [ diffMeta.glow, diffMeta.glow, diffMeta.glow, diffMeta.glow ] ] ]), children: m.icon }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1177, columnNumber: 15 }, this), m.label, " ×", m.mult ] }, d, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1176, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 1172, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/BeaconPanel.tsx", lineNumber: 305, columnNumber: 5 }, this); } _s(BeaconPanel, "tj/kCJ/sKhs7ZFVY6SSfLnZO9cY=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = BeaconPanel; var _c; __turbopack_context__.k.register(_c, "BeaconPanel"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/TutorialOverlay.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "TutorialOverlay", ()=>TutorialOverlay ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 新手教程覆盖层 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/tutorial.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/components/ui/button.tsx [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$left$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronLeft$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/chevron-left.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronRight$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/chevron-right.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; function TutorialOverlay() { _s(); const [open, setOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const [stepIdx, setStepIdx] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(0); const [targetRect, setTargetRect] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const [actionDone, setActionDone] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false); const rafRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); // 首次访问自动打开 (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "TutorialOverlay.useEffect": ()=>{ if (!(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["hasSeenTutorial"])()) { // 等待游戏 mount const t = setTimeout({ "TutorialOverlay.useEffect.t": ()=>setOpen(true) }["TutorialOverlay.useEffect.t"], 600); return ({ "TutorialOverlay.useEffect": ()=>clearTimeout(t) })["TutorialOverlay.useEffect"]; } } }["TutorialOverlay.useEffect"], []); // 监听「重新查看教程」事件 (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "TutorialOverlay.useEffect": ()=>{ const handler = { "TutorialOverlay.useEffect.handler": ()=>{ setStepIdx(0); setActionDone(false); setOpen(true); } }["TutorialOverlay.useEffect.handler"]; window.addEventListener("echo-nexus-tutorial-restart", handler); return ({ "TutorialOverlay.useEffect": ()=>window.removeEventListener("echo-nexus-tutorial-restart", handler) })["TutorialOverlay.useEffect"]; } }["TutorialOverlay.useEffect"], []); // 监听预期动作(用现有 store 状态推断,避免改 schema) const crystals = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TutorialOverlay.useGameStore[crystals]": (s)=>s.crystals }["TutorialOverlay.useGameStore[crystals]"]); const pulsePower = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TutorialOverlay.useGameStore[pulsePower]": (s)=>s.pulsePower }["TutorialOverlay.useGameStore[pulsePower]"]); const ownedTech = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TutorialOverlay.useGameStore[ownedTech]": (s)=>s.tech }["TutorialOverlay.useGameStore[ownedTech]"]); const activePuzzle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TutorialOverlay.useGameStore[activePuzzle]": (s)=>s.activePuzzle }["TutorialOverlay.useGameStore[activePuzzle]"]); const hasActiveExpedition = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "TutorialOverlay.useGameStore[hasActiveExpedition]": (s)=>!!s.activeExpedition && !s.activeExpedition.finished }["TutorialOverlay.useGameStore[hasActiveExpedition]"]); // 记录进入 pulse 步骤时的晶体基线 const pulseBaseRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null); // 动作完成检测:用 rAF 异步轮询,避免 effect 中同步 setState (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "TutorialOverlay.useEffect": ()=>{ if (!open) return; const step = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"][stepIdx]; if (!step?.expectAction) { return; } let raf2 = 0; const check = { "TutorialOverlay.useEffect.check": ()=>{ const s = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"].getState(); let done = false; if (step.expectAction === "pulse") { if (pulseBaseRef.current === null) pulseBaseRef.current = s.crystals; done = s.crystals >= (pulseBaseRef.current ?? 0) + Math.max(0.5, s.pulsePower * 0.5); } else if (step.expectAction === "decode-start") { done = !!s.activePuzzle; } else if (step.expectAction === "tech-buy") { done = Object.values(s.tech).some({ "TutorialOverlay.useEffect.check": (v)=>v > 0 }["TutorialOverlay.useEffect.check"]); } else if (step.expectAction === "expedition-start") { done = !!s.activeExpedition && !s.activeExpedition.finished; } setActionDone({ "TutorialOverlay.useEffect.check": (prev)=>prev !== done ? done : prev }["TutorialOverlay.useEffect.check"]); raf2 = requestAnimationFrame(check); } }["TutorialOverlay.useEffect.check"]; raf2 = requestAnimationFrame(check); return ({ "TutorialOverlay.useEffect": ()=>cancelAnimationFrame(raf2) })["TutorialOverlay.useEffect"]; } }["TutorialOverlay.useEffect"], [ open, stepIdx ]); // 跟踪目标元素位置 const updateTargetRect = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "TutorialOverlay.useCallback[updateTargetRect]": ()=>{ const step = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"][stepIdx]; if (!step?.target) { setTargetRect(null); return; } const el = document.querySelector(`[data-tut="${step.target}"]`); if (!el) { setTargetRect(null); return; } const r = el.getBoundingClientRect(); setTargetRect({ left: r.left, top: r.top, width: r.width, height: r.height }); } }["TutorialOverlay.useCallback[updateTargetRect]"], [ stepIdx ]); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "TutorialOverlay.useEffect": ()=>{ if (!open) return; // 首帧不直接 setState,统一交给 rAF 循环检测 const loop = { "TutorialOverlay.useEffect.loop": ()=>{ updateTargetRect(); rafRef.current = requestAnimationFrame(loop); } }["TutorialOverlay.useEffect.loop"]; rafRef.current = requestAnimationFrame(loop); return ({ "TutorialOverlay.useEffect": ()=>{ if (rafRef.current) cancelAnimationFrame(rafRef.current); } })["TutorialOverlay.useEffect"]; } }["TutorialOverlay.useEffect"], [ open, stepIdx, updateTargetRect ]); const close = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "TutorialOverlay.useCallback[close]": ()=>{ setOpen(false); (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["markTutorialSeen"])(); } }["TutorialOverlay.useCallback[close]"], []); const next = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "TutorialOverlay.useCallback[next]": ()=>{ if (stepIdx >= __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"].length - 1) { close(); return; } setStepIdx({ "TutorialOverlay.useCallback[next]": (i)=>i + 1 }["TutorialOverlay.useCallback[next]"]); setActionDone(false); } }["TutorialOverlay.useCallback[next]"], [ stepIdx, close ]); const prev = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({ "TutorialOverlay.useCallback[prev]": ()=>{ if (stepIdx <= 0) return; setStepIdx({ "TutorialOverlay.useCallback[prev]": (i)=>i - 1 }["TutorialOverlay.useCallback[prev]"]); setActionDone(false); } }["TutorialOverlay.useCallback[prev]"], [ stepIdx ]); if (!open) return null; const step = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"][stepIdx]; const isLast = stepIdx >= __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"].length - 1; // 计算提示气泡位置 const placement = step.placement ?? "auto"; let tooltipStyle = {}; if (targetRect) { const pad = 16; if (placement === "right") { tooltipStyle = { left: targetRect.left + targetRect.width + pad, top: targetRect.top + targetRect.height / 2, transform: "translateY(-50%)" }; } else if (placement === "left") { tooltipStyle = { left: Math.max(16, targetRect.left - 360 - pad), top: targetRect.top + targetRect.height / 2, transform: "translateY(-50%)", maxWidth: 340 }; } else if (placement === "top") { tooltipStyle = { left: Math.max(16, Math.min(targetRect.left, window.innerWidth - 360 - 16)), top: Math.max(16, targetRect.top - 220), maxWidth: 340 }; } else { // bottom / auto tooltipStyle = { left: Math.max(16, Math.min(window.innerWidth / 2 - 170, window.innerWidth - 360 - 16)), top: Math.min(window.innerHeight - 260, (targetRect?.bottom ?? window.innerHeight / 2) + pad), maxWidth: 340 }; } } else { // 无目标 → 居中 tooltipStyle = { left: "50%", top: "50%", transform: "translate(-50%, -50%)", maxWidth: 440 }; } // 聚光灯遮罩:用 4 块 div 挖洞 const renderMask = ()=>{ if (!targetRect) { // 全屏半透明 return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed inset-0 bg-black/70 z-[80] pointer-events-auto" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 187, columnNumber: 14 }, this); } const { left, top, width, height } = targetRect; const pad = 6; const l = left - pad; const t = top - pad; const w = width + pad * 2; const h = height + pad * 2; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed bg-black/70 z-[80] pointer-events-auto", style: { left: 0, top: 0, right: 0, height: Math.max(0, t) } }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 198, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed bg-black/70 z-[80] pointer-events-auto", style: { left: 0, top: t + h, right: 0, bottom: 0 } }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 200, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed bg-black/70 z-[80] pointer-events-auto", style: { left: 0, top: t, width: Math.max(0, l), height: h } }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 202, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed bg-black/70 z-[80] pointer-events-auto", style: { left: l + w, top: t, right: 0, height: h } }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 204, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed z-[81] pointer-events-none rounded-lg", style: { left: l, top: t, width: w, height: h, boxShadow: `0 0 0 2px rgba(232,121,249,0.9), 0 0 24px 4px rgba(232,121,249,0.5)`, animation: "tut-pulse 1.6s ease-in-out infinite" } }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 206, columnNumber: 9 }, this) ] }, void 0, true); }; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed inset-0 z-[79]", children: [ renderMask(), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "fixed z-[82] w-[340px] sm:w-[360px] max-w-[calc(100vw-32px)]", style: tooltipStyle, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "relative rounded-2xl border border-fuchsia-400/40 bg-gradient-to-br from-[#1a0a2e]/95 to-[#0a0a1e]/95 backdrop-blur-xl shadow-2xl shadow-fuchsia-500/20 overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-1 w-full bg-gradient-to-r from-emerald-400 via-fuchsia-500 to-rose-400" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 233, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: close, className: "absolute top-2 right-2 h-7 w-7 rounded-full flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-white/10 transition z-10", "aria-label": "关闭教程", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__X$3e$__["X"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 240, columnNumber: 13 }, this) }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 235, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "p-4 pt-3.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5 mb-2.5", children: __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"].map((s, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `h-1 rounded-full transition-all ${i === stepIdx ? "w-6 bg-fuchsia-400" : i < stepIdx ? "w-3 bg-fuchsia-400/50" : "w-3 bg-white/15"}` }, s.id, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 247, columnNumber: 17 }, this)) }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 245, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "text-sm font-bold text-fuchsia-100 mb-1.5 flex items-center gap-1.5 pr-6", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3.5 w-3.5 text-fuchsia-300 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 261, columnNumber: 15 }, this), step.title ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 260, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[12.5px] text-muted-foreground leading-relaxed whitespace-pre-line", children: step.body }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 264, columnNumber: 13 }, this), step.expectAction && !actionDone && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "mt-3 px-2.5 py-1.5 rounded-lg bg-amber-500/10 border border-amber-400/30 text-[11px] text-amber-200 flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "h-1.5 w-1.5 rounded-full bg-amber-400 animate-pulse" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 271, columnNumber: 17 }, this), "完成动作后自动进入下一步,或点跳过" ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 270, columnNumber: 15 }, this), step.expectAction && actionDone && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "mt-3 px-2.5 py-1.5 rounded-lg bg-emerald-500/10 border border-emerald-400/30 text-[11px] text-emerald-200 flex items-center gap-1.5", children: "✓ 已检测到动作" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 276, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-2 mt-4", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "ghost", onClick: prev, disabled: stepIdx === 0, className: "h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$left$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronLeft$3e$__["ChevronLeft"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 290, columnNumber: 17 }, this), "上一步" ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 283, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "ml-auto flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", variant: "ghost", onClick: close, className: "h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground", children: "跳过" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 294, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$components$2f$ui$2f$button$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Button"], { size: "sm", onClick: next, className: "h-7 px-3 text-[11px] bg-fuchsia-500 hover:bg-fuchsia-600 text-white border-fuchsia-400/50", children: [ isLast ? "完成" : "下一步", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronRight$3e$__["ChevronRight"], { className: "h-3.5 w-3.5 ml-0.5" }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 308, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 302, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 293, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 282, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "text-[10px] text-muted-foreground/60 text-center mt-2", children: [ stepIdx + 1, " / ", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$tutorial$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TUTORIAL_STEPS"].length ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 312, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 243, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 231, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 227, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/TutorialOverlay.tsx", lineNumber: 222, columnNumber: 5 }, this); } _s(TutorialOverlay, "fP+LbeeOStt+TK/VOII60jUus28=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = TutorialOverlay; var _c; __turbopack_context__.k.register(_c, "TutorialOverlay"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/AttributesPanel.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "AttributesPanel", ()=>AttributesPanel ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 角色属性面板(v0.7 P1) // // 无人机驾驶员四维属性可视化: // • 探索力 emerald / 智慧 fuchsia / 勇气 amber / 灵感 rose // • 显示数值(0-100)、加成百分比、经验进度条、等级 badge // • 待分配属性点时高亮 + 闪烁提示,「+」按钮可分配 1 点 // • 顶部待分配点数提示;底部总览 // • 小屏 2×2 网格,大屏 1×4 横排 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/attributes.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$compass$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Compass$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/compass.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$brain$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Brain$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/brain.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$swords$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Swords$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/swords.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/plus.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$up$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronUp$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/chevron-up.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; const ICON_MAP = { Compass: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$compass$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Compass$3e$__["Compass"], Brain: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$brain$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Brain$3e$__["Brain"], Swords: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$swords$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Swords$3e$__["Swords"], Sparkles: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"] }; /** 主题色 → Tailwind/CSS 颜色映射 */ const COLOR_STYLES = { exploration: { text: "text-emerald-300", border: "border-emerald-400/30", borderActive: "border-emerald-400/70", bg: "bg-emerald-500/10", ring: "ring-emerald-400/40", barFrom: "from-emerald-400", barTo: "to-emerald-500", glow: "rgba(52,211,153,0.45)" }, wisdom: { text: "text-fuchsia-300", border: "border-fuchsia-400/30", borderActive: "border-fuchsia-400/70", bg: "bg-fuchsia-500/10", ring: "ring-fuchsia-400/40", barFrom: "from-fuchsia-400", barTo: "to-fuchsia-500", glow: "rgba(232,121,249,0.45)" }, courage: { text: "text-amber-300", border: "border-amber-400/30", borderActive: "border-amber-400/70", bg: "bg-amber-500/10", ring: "ring-amber-400/40", barFrom: "from-amber-400", barTo: "to-amber-500", glow: "rgba(251,191,36,0.45)" }, inspiration: { text: "text-rose-300", border: "border-rose-400/30", borderActive: "border-rose-400/70", bg: "bg-rose-500/10", ring: "ring-rose-400/40", barFrom: "from-rose-400", barTo: "to-rose-500", glow: "rgba(251,113,133,0.45)" } }; function AttributesPanel() { _s(); const attributes = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AttributesPanel.useGameStore[attributes]": (s)=>s.attributes }["AttributesPanel.useGameStore[attributes]"]); const attributeProgress = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AttributesPanel.useGameStore[attributeProgress]": (s)=>s.attributeProgress }["AttributesPanel.useGameStore[attributeProgress]"]); const pendingAttrPoints = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AttributesPanel.useGameStore[pendingAttrPoints]": (s)=>s.pendingAttrPoints ?? 0 }["AttributesPanel.useGameStore[pendingAttrPoints]"]); const allocateAttribute = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "AttributesPanel.useGameStore[allocateAttribute]": (s)=>s.allocateAttribute }["AttributesPanel.useGameStore[allocateAttribute]"]); const bonuses = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "AttributesPanel.useMemo[bonuses]": ()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getAllBonuses"])(attributes) }["AttributesPanel.useMemo[bonuses]"], [ attributes ]); const totalLvl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "AttributesPanel.useMemo[totalLvl]": ()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["totalAttributeLevel"])(attributes) }["AttributesPanel.useMemo[totalLvl]"], [ attributes ]); const totalBonus = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({ "AttributesPanel.useMemo[totalBonus]": ()=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["totalAttributeBonusPct"])(attributes) }["AttributesPanel.useMemo[totalBonus]"], [ attributes ]); return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "flex flex-col gap-2.5 h-full overflow-y-auto echo-scroll pr-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "fb70db4abea5ec9f", children: ".echo-scroll::-webkit-scrollbar{width:4px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.echo-scroll::-webkit-scrollbar-track{background:0 0}@keyframes echo-pending-pulse{0%,to{box-shadow:0 0 #e879f980}50%{box-shadow:0 0 14px 4px #e879f9a6}}.echo-pending-pulse{animation:1.6s ease-in-out infinite echo-pending-pulse}@keyframes echo-card-glow{0%,to{opacity:.5}50%{opacity:1}}" }, void 0, false, void 0, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "jsx-fb70db4abea5ec9f" + " " + "text-sm font-semibold flex items-center gap-1.5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "bg-gradient-to-br from-emerald-300 via-fuchsia-300 to-rose-300 bg-clip-text text-transparent", children: "驾驶员属性" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 132, columnNumber: 11 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 131, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + `text-[10px] px-2 py-0.5 rounded-full border ${pendingAttrPoints > 0 ? "border-fuchsia-400/60 bg-fuchsia-500/15 text-fuchsia-200 echo-pending-pulse font-bold" : "border-white/15 bg-black/25 text-muted-foreground"}`, children: [ "待分配 ", pendingAttrPoints ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 136, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 130, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "grid grid-cols-2 lg:grid-cols-4 gap-2", children: __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_KEYS"].map((key)=>{ const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_CONFIG"][key]; const cs = COLOR_STYLES[key]; const Icon = ICON_MAP[meta.icon] ?? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"]; const value = attributes?.[key] ?? 0; const prog = attributeProgress?.[key] ?? { exp: 0, level: value }; const bonusPct = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getAttributeBonus"])(value) * 100; const nextExp = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["expRequiredForLevel"])(value); const curExp = prog.exp; const expPct = nextExp > 0 ? Math.min(100, curExp / nextExp * 100) : 100; const isMax = value >= __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_HARD_CAP"]; const canAllocate = pendingAttrPoints > 0 && !isMax; // 区域标记 const inDiminishing = value > __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_LINEAR_CAP"]; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { boxShadow: `inset 0 0 18px ${cs.glow}` }, className: "jsx-fb70db4abea5ec9f" + " " + `relative rounded-xl border ${cs.border} ${cs.bg} p-2.5 flex flex-col gap-1.5 overflow-hidden transition-all duration-300`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: meta.hex }, className: "jsx-fb70db4abea5ec9f" + " " + "pointer-events-none absolute -top-8 -right-8 h-20 w-20 rounded-full blur-2xl opacity-50" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 174, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "relative flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { boxShadow: `0 0 8px ${cs.glow}` }, className: "jsx-fb70db4abea5ec9f" + " " + `shrink-0 h-7 w-7 rounded-lg flex items-center justify-center ${cs.bg} border ${cs.border}`, children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Icon, { className: "jsx-fb70db4abea5ec9f" + " " + `h-3.5 w-3.5 ${cs.text}` }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 184, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 180, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "min-w-0 flex-1 leading-tight", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + `text-[11px] font-semibold ${cs.text} truncate`, children: meta.name }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 187, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "text-[8px] text-muted-foreground/70 uppercase tracking-wider truncate", children: meta.enName }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 190, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 186, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + `shrink-0 text-[9px] px-1.5 py-0.5 rounded font-mono font-bold ${isMax ? "bg-amber-400/20 text-amber-200 border border-amber-400/40" : "bg-black/30 text-white/80 border border-white/10"}`, children: [ "Lv.", value ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 194, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 179, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "relative flex items-end justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + `text-lg font-mono font-bold ${cs.text} leading-none`, children: [ value, /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-[9px] text-muted-foreground/60 ml-0.5", children: [ "/", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_HARD_CAP"] ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 209, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 207, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + `text-[10px] ${cs.text} font-mono`, children: [ "+", bonusPct.toFixed(1), "%" ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 213, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 206, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "relative", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "h-1.5 rounded-full bg-black/40 overflow-hidden border border-white/5", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { width: `${isMax ? 100 : expPct}%`, boxShadow: `0 0 6px ${cs.glow}` }, className: "jsx-fb70db4abea5ec9f" + " " + `h-full bg-gradient-to-r ${cs.barFrom} ${cs.barTo} transition-all duration-500` }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 221, columnNumber: 19 }, this) }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 220, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "flex items-center justify-between mt-0.5 text-[8px] text-muted-foreground/70 font-mono", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f", children: isMax ? "已满级" : `${curExp} / ${nextExp} EXP` }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 230, columnNumber: 19 }, this), inDiminishing && !isMax && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-amber-300/70", children: "递减区" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 234, columnNumber: 21 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 229, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 219, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "relative flex flex-col gap-0.5 mt-0.5", children: meta.effects.map((eff, i)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "text-[8.5px] text-muted-foreground/70 leading-tight flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + (cs.text || ""), children: "·" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 246, columnNumber: 21 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "truncate", children: eff }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 247, columnNumber: 21 }, this) ] }, i, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 242, columnNumber: 19 }, this)) }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 240, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { type: "button", disabled: !canAllocate, onClick: ()=>allocateAttribute(key, 1), "aria-label": `分配 1 点到 ${meta.name}`, style: canAllocate ? { boxShadow: `0 0 8px ${cs.glow}` } : undefined, className: "jsx-fb70db4abea5ec9f" + " " + `relative mt-auto rounded-md border px-1.5 py-1 flex items-center justify-center gap-0.5 text-[10px] font-bold transition-all ${canAllocate ? `${cs.borderActive} ${cs.bg} ${cs.text} hover:scale-105 cursor-pointer` : "border-white/5 bg-black/20 text-muted-foreground/30 cursor-not-allowed"}`, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__["Plus"], { className: "h-3 w-3" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 269, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f", children: "分配" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 270, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 253, columnNumber: 15 }, this) ] }, key, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 166, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 148, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "mt-auto rounded-lg border border-white/10 bg-black/30 px-2.5 py-1.5 flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "flex items-center gap-1.5 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$up$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronUp$3e$__["ChevronUp"], { className: "h-3 w-3 text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 280, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-muted-foreground", children: "总等级" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 281, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "font-mono font-bold text-fuchsia-200", children: [ totalLvl, /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-muted-foreground/60 text-[9px]", children: [ "/", __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$attributes$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ATTRIBUTE_HARD_CAP"] * 4 ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 284, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 282, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 279, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "flex items-center gap-2 text-[10px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-muted-foreground", children: "总加成" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 288, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "font-mono font-bold text-emerald-200", children: [ "+", totalBonus.toFixed(1), "%" ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 289, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 287, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 278, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "grid grid-cols-2 gap-1 text-[9px]", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "探险力", value: `×${bonuses.expeditionPowerMult.toFixed(2)}`, color: "text-emerald-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 297, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "解码步数", value: `+${bonuses.decodeStepsBonus}`, color: "text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 298, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "洞见倍率", value: `+${(bonuses.insightMultAdd * 100).toFixed(1)}%`, color: "text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 299, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "自动解码周期", value: `×${bonuses.autoDecodeIntervalMult.toFixed(2)}`, color: "text-fuchsia-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 300, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "探险生命", value: `+${bonuses.expeditionHpBonus}`, color: "text-amber-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 301, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "BOSS 胜率", value: `+${(bonuses.bossWinRateBonus * 100).toFixed(1)}%`, color: "text-amber-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 302, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "巡航护盾", value: `+${bonuses.cruiseShieldBonus}`, color: "text-amber-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 303, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "接触率", value: `×${bonuses.contactRateMult.toFixed(2)}`, color: "text-rose-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 304, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "星潮触发", value: `+${(bonuses.tideTriggerBonus * 100).toFixed(1)}%`, color: "text-rose-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 305, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "脉冲连击", value: `+${(bonuses.pulseComboBonus * 100).toFixed(1)}%`, color: "text-rose-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 306, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "巡航速度", value: `×${bonuses.cruiseShipSpeedMult.toFixed(2)}`, color: "text-emerald-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 307, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(DetailLine, { label: "产能加成", value: `×${bonuses.crystalsPerSecMult.toFixed(2)}`, color: "text-emerald-300" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 308, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 296, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-fb70db4abea5ec9f" + " " + "text-[9px] text-muted-foreground/60 text-center leading-tight", children: [ "每次飞升获得 ", /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-fb70db4abea5ec9f" + " " + "text-fuchsia-300 font-mono", children: "飞升次数 × 2 + 1" }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 313, columnNumber: 16 }, this), " 点属性点;完成对应活动自动累积经验" ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 312, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 111, columnNumber: 5 }, this); } _s(AttributesPanel, "TnH9sTiN7yxDJVZqlARic7vS5cw=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = AttributesPanel; function DetailLine({ label, value, color }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between rounded bg-black/25 border border-white/5 px-1.5 py-0.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-muted-foreground/80 truncate", children: label }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 330, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: `font-mono ${color}`, children: value }, void 0, false, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 331, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/AttributesPanel.tsx", lineNumber: 329, columnNumber: 5 }, this); } _c1 = DetailLine; var _c, _c1; __turbopack_context__.k.register(_c, "AttributesPanel"); __turbopack_context__.k.register(_c1, "DetailLine"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/ExplorationRadar.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "ExplorationRadar", ()=>ExplorationRadar ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 探索目标雷达(v0.10 新增) // 动态展示当前可解锁/可探索的下一目标,让"等待"变"期待" // 缓解工单 #2 "占地方没用" 反馈 — 晶体球下方提供持续探索动力 var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/config.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/achievements.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/constellation.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/expedition.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/target.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$cpu$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Cpu$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/cpu.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/trophy.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/book-open.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/rocket.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$star$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Star$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/star.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trending$2d$down$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__TrendingDown$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/trending-down.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CheckCircle2$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/circle-check.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; function ExplorationRadar() { _s(); const s = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])(); // ===== 计算各系统的下一个目标 ===== const targets = []; // 1. 下一个技术节点(按洞见排序) const nextTech = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TECH_TREE"].filter((t)=>!s.tech[t.id]).sort((a, b)=>a.cost - b.cost)[0]; if (nextTech) { const insightProgress = Math.min(100, s.insights / nextTech.cost * 100); targets.push({ id: "tech_" + nextTech.id, icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$cpu$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Cpu$3e$__["Cpu"], color: "#34d399", label: nextTech.name, detail: `需 ${nextTech.cost} 洞见 · ${nextTech.desc}`, progress: insightProgress, hint: s.insights >= nextTech.cost ? "可解锁" : `还差 ${nextTech.cost - s.insights} 洞见` }); } // 2. 下一个成就(按达成难度近似) const nextAch = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$achievements$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ACHIEVEMENTS"].find((a)=>!s.achievements[a.id]); if (nextAch) { targets.push({ id: "ach_" + nextAch.id, icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trophy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trophy$3e$__["Trophy"], color: "#fbbf24", label: nextAch.name, detail: nextAch.desc, progress: 30, hint: nextAch.rewardText }); } // 3. 下一个记忆碎片 const nextFrag = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FRAGMENTS"].find((f)=>!s.fragments[f.id]); if (nextFrag) { const ownedFrag = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FRAGMENTS"].filter((f)=>s.fragments[f.id]).length; targets.push({ id: "frag_" + nextFrag.id, icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"], color: "#e879f9", label: nextFrag.title, detail: "解码晶体有概率获取", progress: ownedFrag / __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FRAGMENTS"].length * 100, hint: `图谱 ${ownedFrag}/${__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$config$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["FRAGMENTS"].length}` }); } // 4. 探险能量 if (s.energy < __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyCost) { targets.push({ id: "expedition_energy", icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$rocket$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Rocket$3e$__["Rocket"], color: "#fb7185", label: "探险能量恢复中", detail: `满能量可深入遗迹`, progress: s.energy / __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyCost * 100, hint: `${s.energy}/${__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$expedition$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EXPEDITION_CONFIG"].energyCost}` }); } // 5. 飞升进度(接触<100 时) if (s.contact < 100) { targets.push({ id: "ascension", icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$star$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Star$3e$__["Star"], color: "#a78bfa", label: "接触进度", detail: "满 100 可飞升新周目", progress: s.contact, hint: `${s.contact.toFixed(1)}/100` }); } // 6. 星图天赋(飞升后未选择) const ownedConstellation = s.constellation ?? []; if (s.pendingPerkChoices && s.pendingPerkChoices.length > 0) { targets.push({ id: "constellation_pending", icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], color: "#e879f9", label: "星图觉醒待选择", detail: "3 选 1 永久天赋", progress: 100, hint: "立即选择" }); } else if (ownedConstellation.length < __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_PERKS"].length && s.ascensions > 0) { targets.push({ id: "constellation_next", icon: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$star$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Star$3e$__["Star"], color: "#e879f9", label: "下一道星图天赋", detail: `已觉醒 ${ownedConstellation.length}/${__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_PERKS"].length}`, progress: ownedConstellation.length / __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$constellation$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["CONSTELLATION_PERKS"].length * 100, hint: "飞升后解锁" }); } // 取前 3 个最相关目标展示 const topTargets = targets.slice(0, 3); if (topTargets.length === 0) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-xl border border-emerald-400/20 bg-emerald-950/10 p-3 text-center", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$circle$2d$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CheckCircle2$3e$__["CheckCircle2"], { className: "h-5 w-5 text-emerald-400 mx-auto mb-1" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 138, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[11px] text-emerald-200/80", children: "所有目标已达成" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 139, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[9px] text-muted-foreground/60 mt-0.5", children: "继续飞升开启新周目" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 140, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 137, columnNumber: 7 }, this); } return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "rounded-xl border border-white/10 bg-black/30 p-2.5 space-y-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center justify-between", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$target$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Target$3e$__["Target"], { className: "h-3.5 w-3.5 text-emerald-400" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 150, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[11px] font-semibold text-emerald-200", children: "探索目标" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 151, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 149, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[9px] text-muted-foreground/50 font-mono", children: "RADAR" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 153, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 148, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "space-y-1.5", children: topTargets.map((t)=>{ const Icon = t.icon; const isReady = t.progress >= 100; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `rounded-lg p-1.5 transition-all ${isReady ? "bg-white/8 border border-white/15" : "bg-black/20 border border-white/5"}`, style: isReady ? { boxShadow: `0 0 10px ${t.color}33` } : undefined, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1.5 mb-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(Icon, { className: `h-3 w-3 shrink-0 ${isReady ? "animate-pulse" : ""}`, style: { color: t.color } }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 176, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[10px] font-medium truncate flex-1", style: { color: isReady ? t.color : "rgba(255,255,255,0.75)" }, children: t.label }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 180, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "text-[8px] font-mono text-muted-foreground/70 shrink-0", children: t.hint }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 186, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 175, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-0.5 rounded-full bg-black/50 overflow-hidden", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "h-full transition-all duration-500", style: { width: `${Math.min(100, t.progress)}%`, background: t.color, boxShadow: isReady ? `0 0 6px ${t.color}` : "none" } }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 192, columnNumber: 17 }, this) }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 191, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "text-[8px] text-muted-foreground/60 mt-0.5 truncate", children: t.detail }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 202, columnNumber: 15 }, this) ] }, t.id, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 162, columnNumber: 13 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 157, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "flex items-center gap-1 text-[8px] text-muted-foreground/50 pt-0.5 border-t border-white/5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trending$2d$down$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__TrendingDown$3e$__["TrendingDown"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 210, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { children: "持续探索 · 解锁深空奥秘" }, void 0, false, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 211, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 209, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/ExplorationRadar.tsx", lineNumber: 146, columnNumber: 5 }, this); } _s(ExplorationRadar, "fAEq+83UwCivaXSTAo8NpxzXJHM=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = ExplorationRadar; var _c; __turbopack_context__.k.register(_c, "ExplorationRadar"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/RelicCodex.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "RelicCodex", ()=>RelicCodex ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 文明遗迹图鉴面板(v0.10 新增) // 展示深空考古发现的远古文明遗迹,增加世界观深度与探索乐趣 var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/relicCodex.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$marked$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookMarked$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/book-marked.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/lock.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/sparkles.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/clock.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/users.js [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$scroll$2d$text$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ScrollText$3e$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/scroll-text.js [app-client] (ecmascript) "); ; var _s = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; function RelicCodex() { _s(); const state = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])(); const [selected, setSelected] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null); const unlockedRelics = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getUnlockedRelics"])(state); const progress = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getRelicProgress"])(state); const rewards = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["getRelicRewards"])(state); const selectedRelic = selected ? __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["RELIC_CODEX"].find((r)=>r.id === selected) : null; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex flex-col gap-2.5 h-full min-h-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center justify-between gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("h3", { className: "jsx-89979d12e77b884d" + " " + "text-sm font-semibold flex items-center gap-1.5 shrink-0", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$marked$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookMarked$3e$__["BookMarked"], { className: "h-4 w-4 text-fuchsia-400" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 29, columnNumber: 11 }, this), "遗迹图鉴" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 28, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-2 text-[10px] font-mono", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-fuchsia-300", children: unlockedRelics.length }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 33, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/50", children: "/" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 34, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground", children: __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["RELIC_CODEX"].length }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 35, columnNumber: 11 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/60", children: [ "(", progress.toFixed(0), "%)" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 36, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 32, columnNumber: 9 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 27, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "h-1 rounded-full bg-black/40 overflow-hidden", children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { width: `${progress}%`, boxShadow: "0 0 8px rgba(232,121,249,0.5)" }, className: "jsx-89979d12e77b884d" + " " + "h-full bg-gradient-to-r from-fuchsia-500 via-rose-400 to-amber-400 transition-all duration-500" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 42, columnNumber: 9 }, this) }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 41, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "rounded-lg border border-fuchsia-400/20 bg-fuchsia-950/20 px-2.5 py-1.5 flex items-center gap-2 text-[10px] flex-wrap", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3 w-3 text-fuchsia-400 shrink-0" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 50, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-fuchsia-300/80", children: "考古收获" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 51, columnNumber: 9 }, this), rewards.crystals > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-emerald-300", children: [ "+", rewards.crystals, " 晶体" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 53, columnNumber: 11 }, this), rewards.insights > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-amber-300", children: [ "+", rewards.insights, " 洞见" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 56, columnNumber: 11 }, this), rewards.contact > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-fuchsia-300", children: [ "+", rewards.contact, " 接触" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 59, columnNumber: 11 }, this), rewards.crystalsPerSecPct > 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-emerald-300", children: [ "产能 +", rewards.crystalsPerSecPct, "%" ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 62, columnNumber: 11 }, this), unlockedRelics.length === 0 && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "text-muted-foreground/60", children: "持续探索解锁奖励" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 65, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 49, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex-1 min-h-0 overflow-y-auto echo-scroll pr-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "grid grid-cols-1 sm:grid-cols-2 gap-1.5", children: __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$relicCodex$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["RELIC_CODEX"].map((relic)=>{ const unlocked = !!state.achievements?.[`relic_${relic.id}`] || relic.unlock(state); const isSelected = selected === relic.id; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { onClick: ()=>setSelected(isSelected ? null : relic.id), style: unlocked ? { boxShadow: `inset 0 0 14px ${relic.color}10` } : undefined, className: "jsx-89979d12e77b884d" + " " + `relative rounded-lg border px-2.5 py-2 transition-all duration-300 min-h-[72px] text-left ${unlocked ? isSelected ? "border-white/30 bg-white/8" : "border-white/15 bg-black/30 hover:bg-black/40" : "border-white/5 bg-black/15 opacity-70"}`, children: [ unlocked && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: relic.color }, className: "jsx-89979d12e77b884d" + " " + "absolute -top-6 -right-6 h-14 w-14 rounded-full blur-2xl opacity-30 pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 93, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "relative flex items-start gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: unlocked ? `${relic.color}22` : "rgba(255,255,255,0.04)", border: `1px solid ${unlocked ? relic.color + "55" : "rgba(255,255,255,0.08)"}`, color: unlocked ? relic.color : "#555", boxShadow: unlocked ? `0 0 10px ${relic.color}33` : "none" }, className: "jsx-89979d12e77b884d" + " " + "shrink-0 h-9 w-9 rounded-lg flex items-center justify-center text-lg", children: unlocked ? relic.icon : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$lock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Lock$3e$__["Lock"], { className: "h-3.5 w-3.5" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 109, columnNumber: 46 }, this) }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 100, columnNumber: 19 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "min-w-0 flex-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { color: unlocked ? relic.color : "rgba(255,255,255,0.5)" }, className: "jsx-89979d12e77b884d" + " " + "text-[11px] font-semibold truncate", children: unlocked ? relic.name : "??? 未发现" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 113, columnNumber: 21 }, this), unlocked ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "text-[9px] text-muted-foreground/70 truncate flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 122, columnNumber: 27 }, this), relic.race ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 121, columnNumber: 25 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "text-[9px] text-muted-foreground/60 truncate flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 126, columnNumber: 27 }, this), relic.era ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 125, columnNumber: 25 }, this) ] }, void 0, true) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "text-[9px] text-muted-foreground/60 mt-0.5 line-clamp-2", children: relic.unlockHint }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 131, columnNumber: 23 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 112, columnNumber: 19 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 98, columnNumber: 17 }, this) ] }, relic.id, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 76, columnNumber: 15 }, this); }) }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 71, columnNumber: 9 }, this), selectedRelic && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { borderColor: `${selectedRelic.color}44`, background: `linear-gradient(135deg, ${selectedRelic.color}11, rgba(0,0,0,0.4))` }, className: "jsx-89979d12e77b884d" + " " + "mt-2 rounded-lg border p-3 relative overflow-hidden", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: `${selectedRelic.color}22` }, className: "jsx-89979d12e77b884d" + " " + "absolute -top-8 -right-8 h-24 w-24 rounded-full blur-2xl pointer-events-none" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 151, columnNumber: 13 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "relative space-y-1.5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-2", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: selectedRelic.color }, className: "jsx-89979d12e77b884d" + " " + "text-base", children: selectedRelic.icon }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 157, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: selectedRelic.color }, className: "jsx-89979d12e77b884d" + " " + "text-sm font-semibold", children: selectedRelic.name }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 160, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 156, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-3 text-[9px] text-muted-foreground/80", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Users$3e$__["Users"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 169, columnNumber: 19 }, this), selectedRelic.race ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 168, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$clock$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Clock$3e$__["Clock"], { className: "h-2.5 w-2.5" }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 173, columnNumber: 19 }, this), selectedRelic.era ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 172, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 167, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-89979d12e77b884d" + " " + "text-[10px] text-muted-foreground/90 italic", children: selectedRelic.brief }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 177, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-start gap-1.5 pt-1 border-t border-white/5", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$scroll$2d$text$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ScrollText$3e$__["ScrollText"], { className: "h-3 w-3 mt-0.5 shrink-0", style: { color: selectedRelic.color } }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 181, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { className: "jsx-89979d12e77b884d" + " " + "text-[10px] text-foreground/85 leading-relaxed", children: selectedRelic.story }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 185, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 180, columnNumber: 15 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-89979d12e77b884d" + " " + "flex items-center gap-1.5 pt-1", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Sparkles$3e$__["Sparkles"], { className: "h-3 w-3 shrink-0", style: { color: selectedRelic.color } }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 190, columnNumber: 17 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { style: { color: selectedRelic.color + "cc" }, className: "jsx-89979d12e77b884d" + " " + "text-[10px] font-mono", children: selectedRelic.rewardText }, void 0, false, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 194, columnNumber: 17 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 189, columnNumber: 15 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 155, columnNumber: 13 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 144, columnNumber: 11 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 70, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "89979d12e77b884d", children: ".echo-scroll::-webkit-scrollbar{width:5px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/RelicCodex.tsx", lineNumber: 25, columnNumber: 5 }, this); } _s(RelicCodex, "iOc0Y94UFL6wVp6drOqh3RSAvpM=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c = RelicCodex; var _c; __turbopack_context__.k.register(_c, "RelicCodex"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/game/StarTide.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "StarTideIndicator", ()=>StarTideIndicator, "StarTideNotifier", ()=>StarTideNotifier, "StarTideOverlay", ()=>StarTideOverlay ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/styled-jsx/style.js [app-client] (ecmascript)"); // 回响星核 / Echo Nexus — 星潮事件 UI(横幅 + 通知 + 背景叠层) var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__ = __turbopack_context__.i("[project]/src/store/gameStore.ts [app-client] (ecmascript) "); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/use-toast.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/hooks/useAudio.ts [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/game/starTide.ts [app-client] (ecmascript)"); ; var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature(), _s2 = __turbopack_context__.k.signature(); "use client"; ; ; ; ; ; ; function StarTideNotifier() { _s(); const events = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideNotifier.useGameStore[events]": (s)=>s._tideEvents }["StarTideNotifier.useGameStore[events]"]); const consume = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideNotifier.useGameStore[consume]": (s)=>s.consumeTideEvents }["StarTideNotifier.useGameStore[consume]"]); const { toast } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"])(); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "StarTideNotifier.useEffect": ()=>{ if (events.length === 0) return; const items = consume(); for (const ev of items){ const globalTag = ev.isGlobal ? "🌐 " : ""; if (ev.started) { const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TIDE_EVENTS"][ev.started]; (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("tideStart"); toast({ title: `${globalTag}${meta.icon} ${ev.isGlobal ? "全球星潮" : "星潮降临"}:${meta.name}`, description: ev.isGlobal ? `全球玩家同步经历 · ${meta.desc}` : meta.desc }); } if (ev.ended) { const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TIDE_EVENTS"][ev.ended]; if (ev.silenceCompensation && ev.silenceCompensation > 0) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("techBuy"); toast({ title: `${globalTag}${meta.icon} 寂静期消散`, description: `虚空回赠 ${ev.silenceCompensation} 洞见。` }); } else { (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$useAudio$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["sfx"])("tideEnd"); toast({ title: `${globalTag}${meta.icon} ${meta.name}结束`, description: ev.isGlobal ? "全球星潮退去,物理法则恢复。" : "星潮退去,物理法则恢复。" }); } } } } }["StarTideNotifier.useEffect"], [ events, consume, toast ]); return null; } _s(StarTideNotifier, "Zqo+Z3odtW6uHeagt5EN6OsC9aw=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$hooks$2f$use$2d$toast$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useToast"] ]; }); _c = StarTideNotifier; function StarTideIndicator() { _s1(); const activeTide = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideIndicator.useGameStore[activeTide]": (s)=>s.activeTide }["StarTideIndicator.useGameStore[activeTide]"]); const globalTide = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideIndicator.useGameStore[globalTide]": (s)=>s.globalTide }["StarTideIndicator.useGameStore[globalTide]"]); const [, force] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(0); // 每秒刷新倒计时 (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "StarTideIndicator.useEffect": ()=>{ if (!activeTide) return; const id = setInterval({ "StarTideIndicator.useEffect.id": ()=>force({ "StarTideIndicator.useEffect.id": (n)=>n + 1 }["StarTideIndicator.useEffect.id"]) }["StarTideIndicator.useEffect.id"], 500); return ({ "StarTideIndicator.useEffect": ()=>clearInterval(id) })["StarTideIndicator.useEffect"]; } }["StarTideIndicator.useEffect"], [ activeTide ]); if (!activeTide) return null; const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TIDE_EVENTS"][activeTide.type]; const remaining = Math.max(0, activeTide.endsAt - Date.now()); const secs = Math.ceil(remaining / 1000); // 全球星潮持续 60s,本地 75s —— 用实际 endsAt-startedAt 计算 progress,避免越界 const duration = globalTide ? globalTide.endsAt - globalTide.startedAt : __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TIDE_CONFIG"].duration; const progress = Math.min(1, Math.max(0, 1 - remaining / duration)); const isGlobal = !!globalTide; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: `flex items-center gap-1.5 px-2 py-1 rounded-full text-[10px] font-medium relative overflow-hidden ${isGlobal ? "ring-1 ring-amber-300/60" : ""}`, style: { background: isGlobal ? `linear-gradient(135deg, ${meta.color}26, ${meta.color}11)` : `${meta.color}1a`, border: `1px solid ${meta.color}${isGlobal ? "88" : "55"}`, color: meta.color, boxShadow: `0 0 ${isGlobal ? "16" : "10"}px ${meta.glow}` }, title: isGlobal ? `🌐 全球星潮 · ${meta.desc}` : meta.desc, children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "absolute inset-0 opacity-20", style: { background: `linear-gradient(90deg, ${meta.color}40 ${progress * 100}%, transparent ${progress * 100}%)` } }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 94, columnNumber: 7 }, this), isGlobal && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "relative text-[11px] leading-none animate-pulse", "aria-label": "全球星潮标记", children: "🌐" }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 101, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "relative text-xs leading-none", children: meta.icon }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 108, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "relative leading-none", children: meta.name }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 109, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { className: "relative font-mono leading-none opacity-80", children: [ secs, "s" ] }, void 0, true, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 110, columnNumber: 7 }, this) ] }, void 0, true, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 79, columnNumber: 5 }, this); } _s1(StarTideIndicator, "ltU8198o96+gwp6cgll9T4zhwZI=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c1 = StarTideIndicator; function StarTideOverlay() { _s2(); const activeTide = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideOverlay.useGameStore[activeTide]": (s)=>s.activeTide }["StarTideOverlay.useGameStore[activeTide]"]); const globalTide = (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"])({ "StarTideOverlay.useGameStore[globalTide]": (s)=>s.globalTide }["StarTideOverlay.useGameStore[globalTide]"]); if (!activeTide) return null; const meta = __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$game$2f$starTide$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["TIDE_EVENTS"][activeTide.type]; const isGlobal = !!globalTide; return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { className: "jsx-12289952018fdcbd" + " " + "fixed inset-0 pointer-events-none z-0 transition-opacity duration-1000", children: [ /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: `linear-gradient(180deg, ${meta.color}22, transparent)` }, className: "jsx-12289952018fdcbd" + " " + "absolute top-0 left-0 right-0 h-24 opacity-40" }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 126, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: `linear-gradient(0deg, ${meta.color}22, transparent)` }, className: "jsx-12289952018fdcbd" + " " + "absolute bottom-0 left-0 right-0 h-24 opacity-40" }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 133, columnNumber: 7 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { boxShadow: `inset 0 0 ${isGlobal ? "160" : "120"}px ${meta.glow}`, animation: "tide-breathe 3s ease-in-out infinite" }, className: "jsx-12289952018fdcbd" + " " + "absolute inset-0" }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 140, columnNumber: 7 }, this), isGlobal && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { style: { background: "linear-gradient(90deg, transparent, #fbbf24, #fcd34d, #fbbf24, transparent)", boxShadow: "0 0 16px rgba(251,191,36,0.7)", animation: "global-tide-sweep 2.5s linear infinite" }, className: "jsx-12289952018fdcbd" + " " + "absolute top-0 left-0 right-0 h-1 opacity-90" }, void 0, false, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 149, columnNumber: 9 }, this), /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$styled$2d$jsx$2f$style$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { id: "12289952018fdcbd", children: "@keyframes tide-breathe{0%,to{opacity:.5}50%{opacity:.9}}@keyframes global-tide-sweep{0%{transform:translate(-30%)}to{transform:translate(30%)}}" }, void 0, false, void 0, this) ] }, void 0, true, { fileName: "[project]/src/components/game/StarTide.tsx", lineNumber: 124, columnNumber: 5 }, this); } _s2(StarTideOverlay, "AHFYbMIC8IXJtt89GvDORwFzHx8=", false, function() { return [ __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"], __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$store$2f$gameStore$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$locals$3e$__["useGameStore"] ]; }); _c2 = StarTideOverlay; var _c, _c1, _c2; __turbopack_context__.k.register(_c, "StarTideNotifier"); __turbopack_context__.k.register(_c1, "StarTideIndicator"); __turbopack_context__.k.register(_c2, "StarTideOverlay"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), "[project]/src/components/ui/tabs.tsx [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Tabs", ()=>Tabs, "TabsContent", ()=>TabsContent, "TabsList", ()=>TabsList, "TabsTrigger", ()=>TabsTrigger ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$tabs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-tabs/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/src/lib/utils.ts [app-client] (ecmascript)"); "use client"; ; ; ; function Tabs({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$tabs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], { "data-slot": "tabs", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex flex-col gap-2", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/tabs.tsx", lineNumber: 13, columnNumber: 5 }, this); } _c = Tabs; function TabsList({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$tabs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["List"], { "data-slot": "tabs-list", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/tabs.tsx", lineNumber: 26, columnNumber: 5 }, this); } _c1 = TabsList; function TabsTrigger({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$tabs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Trigger"], { "data-slot": "tabs-trigger", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/tabs.tsx", lineNumber: 42, columnNumber: 5 }, this); } _c2 = TabsTrigger; function TabsContent({ className, ...props }) { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$tabs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Content"], { "data-slot": "tabs-content", className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$utils$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cn"])("flex-1 outline-none", className), ...props }, void 0, false, { fileName: "[project]/src/components/ui/tabs.tsx", lineNumber: 58, columnNumber: 5 }, this); } _c3 = TabsContent; ; var _c, _c1, _c2, _c3; __turbopack_context__.k.register(_c, "Tabs"); __turbopack_context__.k.register(_c1, "TabsList"); __turbopack_context__.k.register(_c2, "TabsTrigger"); __turbopack_context__.k.register(_c3, "TabsContent"); if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) { __turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$); } }), ]); //# sourceMappingURL=src_components_668f4971._.js.map