Files
gnommoeditor/public/glitch/glitch_migration_paradox/migration-paradox.js
T

423 lines
28 KiB
JavaScript

(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('._container_166qm_3{--component-font-main: var(--font-main, system-ui, sans-serif);--component-font-display: var(--font-display, var(--component-font-main));--component-font-mono: var(--font-mono, monospace);background:var(--gc-bg, #0a0a0f);color:var(--gc-text, #e8e8ec);box-sizing:border-box;font-family:var(--component-font-main);line-height:1.6;max-width:640px;margin:0 auto;padding:1rem}._container_166qm_3 *,._container_166qm_3 *:before,._container_166qm_3 *:after{box-sizing:inherit}._panel_166qm_21{animation:_fadeIn_166qm_1 .3s ease;background:var(--gc-bg-secondary, #12121a);border:4px solid var(--gc-border, #2a2a3a);border-radius:4px;box-shadow:0 0 0 2px var(--gc-bg, #0a0a0f),0 0 20px #6366f126,inset 0 0 60px #00000080}@keyframes _fadeIn_166qm_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._imageFrame_166qm_38{width:100%;min-height:100%;object-fit:contain;aspect-ratio:16 / 9;background:#000;border-bottom:4px solid var(--gc-border, #2a2a3a);overflow:hidden;position:relative}._imageFrame_166qm_38:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(0deg,rgba(0,0,0,.4) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.2) 100%);pointer-events:none}._sceneImage_166qm_63{width:100%;height:100%;object-fit:contain;image-rendering:auto}._sceneFallback_166qm_70{--scene-accent: var(--gc-primary, #6366f1);--scene-glow: rgb(99 102 241 / 26%);--scene-panel: rgb(8 10 20 / 92%);position:relative;display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:1rem;background:radial-gradient(circle at 20% 18%,var(--scene-glow),transparent 34%),linear-gradient(145deg,rgb(8 10 20 / 96%),rgb(5 6 12 / 96%));overflow:hidden}._sceneFallback_166qm_70[data-tone=danger]{--scene-accent: #ef4444;--scene-glow: rgb(239 68 68 / 22%)}._sceneFallback_166qm_70[data-tone=accent]{--scene-accent: var(--gc-accent, #22d3ee);--scene-glow: rgb(34 211 238 / 20%)}._sceneFallback_166qm_70[data-tone=success]{--scene-accent: #22c55e;--scene-glow: rgb(34 197 94 / 20%)}._sceneFallbackGlow_166qm_102{position:absolute;inset:12% auto auto 8%;width:40%;aspect-ratio:1;border-radius:999px;background:radial-gradient(circle,var(--scene-glow),transparent 70%);filter:blur(8px);pointer-events:none}._sceneFallbackHud_166qm_113{position:relative;display:flex;justify-content:space-between;gap:.75rem;align-items:center;z-index:1}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{border:1px solid color-mix(in srgb,var(--scene-accent) 55%,transparent);background:color-mix(in srgb,var(--scene-panel) 88%,transparent);color:color-mix(in srgb,var(--scene-accent) 86%,white);padding:.35rem .55rem;text-transform:uppercase;letter-spacing:.14em;font-family:var(--component-font-mono);font-size:.66rem}._sceneFallbackSignal_166qm_123{opacity:.85}._sceneFallbackCopy_166qm_138{position:relative;z-index:1;display:grid;gap:.45rem;max-width:28rem}._sceneFallbackKicker_166qm_146{margin:0;color:color-mix(in srgb,var(--scene-accent) 78%,white);font-family:var(--component-font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}._sceneFallbackTitle_166qm_155{margin:0;color:#fff;font-family:var(--component-font-display);font-size:clamp(1.3rem,2.8vw,2rem);line-height:1.05;text-transform:uppercase}._sceneFallbackDetail_166qm_164{margin:0;color:#e8e8ecc2;font-size:.88rem;max-width:32ch}._sceneFallbackBars_166qm_171{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;align-items:end}._sceneFallbackBars_166qm_171 span{height:.35rem;border-radius:999px;background:linear-gradient(90deg,var(--scene-accent),color-mix(in srgb,var(--scene-accent) 18%,transparent));opacity:.9}._sceneFallbackBars_166qm_171 span:nth-child(2){width:82%}._sceneFallbackBars_166qm_171 span:nth-child(3){width:64%}._dialogueBox_166qm_196{padding:1.5rem;position:relative}._dialogueBox_166qm_196:before{content:"";position:absolute;top:0;left:1rem;right:1rem;height:1px;background:linear-gradient(90deg,transparent,var(--gc-primary, #6366f1) 20%,var(--gc-primary, #6366f1) 80%,transparent)}._dialogueHeader_166qm_217{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}._title_166qm_224{color:var(--gc-primary, #6366f1);font-family:var(--component-font-display);margin:0;font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 10px rgba(99,102,241,.5)}._loopBadge_166qm_235{background:rgba(239,68,68,.2);color:#ef4444;padding:.25rem .75rem;border:2px solid #ef4444;border-radius:2px;font-family:var(--component-font-mono);font-size:.75rem;font-weight:700;letter-spacing:.1em;animation:_loopPulse_166qm_1 1.5s ease-in-out infinite}@keyframes _loopPulse_166qm_1{0%,to{opacity:1}50%{opacity:.6}}._description_166qm_253{color:var(--gc-text-muted, #9999a8);margin:0 0 1.25rem;font-size:.95rem;line-height:1.7}._actionButton_166qm_261{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);color:#fff;border:2px solid #6366f1;padding:.875rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #1e1b4b,0 6px 10px #0000004d;position:relative;top:0}._actionButton_166qm_261:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #1e1b4b,0 8px 15px #0000004d}._actionButton_166qm_261:active{top:4px;box-shadow:0 0 #1e1b4b,0 2px 5px #0000004d}._choices_166qm_296{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}._choiceButton_166qm_303{background:var(--gc-bg, #0a0a0f);border:2px solid var(--gc-border, #2a2a3a);padding:1rem;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;gap:1rem;position:relative;overflow:hidden}._choiceButton_166qm_303:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gc-primary, #6366f1);opacity:0;transition:opacity .15s ease}._choiceButton_166qm_303:hover{border-color:var(--gc-primary, #6366f1);background:rgba(99,102,241,.08)}._choiceButton_166qm_303:hover:before{opacity:1}._choiceKey_166qm_337{width:2.5rem;height:2.5rem;background:linear-gradient(180deg,#374151 0%,#1f2937 100%);border:2px solid #4b5563;border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--component-font-mono);font-size:1.25rem;font-weight:700;color:#e5e7eb;flex-shrink:0;box-shadow:0 3px #111827,inset 0 1px #ffffff1a;text-shadow:0 1px 2px rgba(0,0,0,.5)}._choiceButton_166qm_303:hover ._choiceKey_166qm_337{background:linear-gradient(180deg,#4f46e5 0%,#3730a3 100%);border-color:#6366f1;box-shadow:0 3px #1e1b4b,inset 0 1px #ffffff26,0 0 10px #6366f14d}._choiceContent_166qm_366{display:flex;flex-direction:column;gap:.25rem;text-align:left}._choiceTitle_166qm_373{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-weight:700;font-size:1rem}._choiceDesc_166qm_380{color:var(--gc-text-muted, #9999a8);font-size:.8rem;font-style:italic}._rejection_166qm_387{background:rgba(239,68,68,.08);border:2px solid rgba(239,68,68,.4);padding:1.25rem;margin-bottom:1.25rem;position:relative}._rejectionBadge_166qm_395{display:inline-block;background:#dc2626;color:#fff;padding:.25rem .75rem;font-family:var(--component-font-mono);font-size:.8rem;font-weight:700;letter-spacing:.15em;margin-bottom:1rem;animation:_shake_166qm_1 .5s ease-in-out}@keyframes _shake_166qm_1{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}._quote_166qm_416{color:var(--gc-text, #e8e8ec);font-family:var(--component-font-display);font-size:1.1rem;font-weight:700;margin:0 0 .75rem;padding-left:1rem;border-left:3px solid #ef4444}._explanation_166qm_426{color:var(--gc-text-muted, #9999a8);margin:0;font-size:.9rem;padding-left:1rem;border-left:3px solid transparent}._insightButton_166qm_435{background:transparent;border:2px dashed var(--gc-accent, #22d3ee);color:var(--gc-accent, #22d3ee);padding:.75rem 1rem;font-family:var(--component-font-display);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:1rem;width:100%;animation:_glowPulse_166qm_1 2s ease-in-out infinite}@keyframes _glowPulse_166qm_1{0%,to{box-shadow:0 0 5px #22d3ee4d}50%{box-shadow:0 0 15px #22d3ee80}}._insightButton_166qm_435:hover{background:rgba(34,211,238,.1);border-style:solid}._insight_166qm_435{text-align:center}._insightTitle_166qm_465{color:var(--gc-accent, #22d3ee);margin:0 0 1.5rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-shadow:0 0 15px rgba(34,211,238,.5)}._paradoxDiagram_166qm_474{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1.5rem;padding:1rem;background:rgba(0,0,0,.4);border:1px solid var(--gc-border, #2a2a3a)}._paradoxNode_166qm_486{background:var(--gc-bg, #0a0a0f);border:1px solid var(--gc-border, #2a2a3a);padding:.4rem .6rem;font-family:var(--component-font-mono);font-size:.7rem;color:var(--gc-text-muted, #9999a8)}._paradoxArrow_166qm_495{color:var(--gc-primary, #6366f1);font-size:1rem;font-weight:700}._paradoxLoop_166qm_501{color:var(--gc-accent, #22d3ee);font-size:1.5rem;margin-left:.5rem;animation:_spin_166qm_1 3s linear infinite}@keyframes _spin_166qm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._insightText_166qm_513{color:var(--gc-text, #e8e8ec);margin:0 0 1rem;font-size:.9rem;line-height:1.7;text-align:left}._insightText_166qm_513:last-of-type{margin-bottom:0}._insightText_166qm_513 strong{color:var(--gc-accent, #22d3ee)}._completeButton_166qm_530{background:linear-gradient(180deg,#059669 0%,#047857 100%);color:#fff;border:2px solid #10b981;padding:1rem 1.5rem;font-family:var(--component-font-display);font-size:1rem;font-weight:700;cursor:pointer;transition:all .15s ease;width:100%;margin-top:1.5rem;text-shadow:0 1px 2px rgba(0,0,0,.5);box-shadow:0 4px #064e3b,0 6px 10px #0000004d;position:relative;top:0}._completeButton_166qm_530:hover{filter:brightness(1.1);top:-2px;box-shadow:0 6px #064e3b,0 8px 15px #0000004d}._completeButton_166qm_530:active{top:4px;box-shadow:0 0 #064e3b,0 2px 5px #0000004d}._successBox_166qm_566{text-align:center}._successTitle_166qm_570{color:#22c55e;margin:0 0 1rem;font-family:var(--component-font-display);font-size:1.25rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;text-shadow:0 0 15px rgba(34,197,94,.5)}._stats_166qm_581{color:var(--gc-text-muted, #9999a8);margin:0 0 1.5rem;font-size:.9rem}._scoreDisplay_166qm_587{background:rgba(0,0,0,.4);border:2px solid var(--gc-accent, #22d3ee);padding:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}._scoreLabel_166qm_597{color:var(--gc-text-muted, #9999a8);font-family:var(--component-font-mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.2em}._scoreValue_166qm_605{color:var(--gc-accent, #22d3ee);font-size:3rem;font-weight:700;text-shadow:0 0 20px rgba(34,211,238,.5)}@media (max-width: 480px){._container_166qm_3{padding:.5rem}._dialogueBox_166qm_196{padding:1rem}._title_166qm_224{font-size:1.1rem}._choiceKey_166qm_337{width:2rem;height:2rem;font-size:1rem}._paradoxDiagram_166qm_474{gap:.25rem;padding:.75rem}._paradoxNode_166qm_486{font-size:.6rem;padding:.3rem .5rem}._sceneFallback_166qm_70{padding:.85rem}._sceneFallbackHud_166qm_113{gap:.5rem}._sceneFallbackBadge_166qm_122,._sceneFallbackSignal_166qm_123{font-size:.58rem;padding:.3rem .45rem}._sceneFallbackTitle_166qm_155{font-size:1.1rem}._sceneFallbackDetail_166qm_164{font-size:.78rem}}')),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
import { jsxs as t, jsx as a } from "react/jsx-runtime";
import { useState as b, useMemo as I, useCallback as d } from "react";
const K = "_container_166qm_3", O = "_panel_166qm_21", V = "_fadeIn_166qm_1", $ = "_imageFrame_166qm_38", G = "_sceneImage_166qm_63", W = "_sceneFallback_166qm_70", J = "_sceneFallbackGlow_166qm_102", z = "_sceneFallbackHud_166qm_113", Q = "_sceneFallbackBadge_166qm_122", X = "_sceneFallbackSignal_166qm_123", Z = "_sceneFallbackCopy_166qm_138", P = "_sceneFallbackKicker_166qm_146", ee = "_sceneFallbackTitle_166qm_155", ae = "_sceneFallbackDetail_166qm_164", te = "_sceneFallbackBars_166qm_171", ne = "_dialogueBox_166qm_196", se = "_dialogueHeader_166qm_217", ce = "_title_166qm_224", oe = "_loopBadge_166qm_235", ie = "_loopPulse_166qm_1", le = "_description_166qm_253", re = "_actionButton_166qm_261", de = "_choices_166qm_296", me = "_choiceButton_166qm_303", he = "_choiceKey_166qm_337", pe = "_choiceContent_166qm_366", ue = "_choiceTitle_166qm_373", ge = "_choiceDesc_166qm_380", _e = "_rejection_166qm_387", Ne = "_rejectionBadge_166qm_395", be = "_shake_166qm_1", ke = "_quote_166qm_416", xe = "_explanation_166qm_426", ye = "_insightButton_166qm_435", Be = "_glowPulse_166qm_1", ve = "_insight_166qm_435", qe = "_insightTitle_166qm_465", Ce = "_paradoxDiagram_166qm_474", Te = "_paradoxNode_166qm_486", Fe = "_paradoxArrow_166qm_495", fe = "_paradoxLoop_166qm_501", we = "_spin_166qm_1", Ae = "_insightText_166qm_513", Ie = "_completeButton_166qm_530", Ee = "_successBox_166qm_566", Se = "_successTitle_166qm_570", je = "_stats_166qm_581", De = "_scoreDisplay_166qm_587", Me = "_scoreLabel_166qm_597", Le = "_scoreValue_166qm_605", e = {
container: K,
panel: O,
fadeIn: V,
imageFrame: $,
sceneImage: G,
sceneFallback: W,
sceneFallbackGlow: J,
sceneFallbackHud: z,
sceneFallbackBadge: Q,
sceneFallbackSignal: X,
sceneFallbackCopy: Z,
sceneFallbackKicker: P,
sceneFallbackTitle: ee,
sceneFallbackDetail: ae,
sceneFallbackBars: te,
dialogueBox: ne,
dialogueHeader: se,
title: ce,
loopBadge: oe,
loopPulse: ie,
description: le,
actionButton: re,
choices: de,
choiceButton: me,
choiceKey: he,
choiceContent: pe,
choiceTitle: ue,
choiceDesc: ge,
rejection: _e,
rejectionBadge: Ne,
shake: be,
quote: ke,
explanation: xe,
insightButton: ye,
glowPulse: Be,
insight: ve,
insightTitle: qe,
paradoxDiagram: Ce,
paradoxNode: Te,
paradoxArrow: Fe,
paradoxLoop: fe,
spin: we,
insightText: Ae,
completeButton: Ie,
successBox: Ee,
successTitle: Se,
stats: je,
scoreDisplay: De,
scoreLabel: Me,
scoreValue: Le
}, E = "/glitch/migration-paradox", Re = 2, He = 1, _ = {
presenting: {
badge: "Migration Briefing",
title: "Stakeholders Await Your Plan",
copy: "Frame the migration as progress without triggering fear.",
detail: "You need a strategy that creates momentum before the paradox closes in.",
tone: "primary"
},
"rejection-value": {
badge: "Stakeholder Response",
title: "Too Much Change",
copy: "Your pitch sounded valuable, but it also sounded dangerous.",
detail: "They want new capability only if nothing important feels different.",
tone: "danger"
},
"rejection-same": {
badge: "Stakeholder Response",
title: "Too Little Value",
copy: "Your pitch sounded safe, but it also sounded pointless.",
detail: "They want risk contained, but they still expect the migration to matter.",
tone: "danger"
},
awareness: {
badge: "Pattern Detected",
title: "Expose The Contradiction",
copy: "Show how value and continuity need different phases, not one impossible promise.",
detail: "Explore, preserve, and then innovate.",
tone: "accent"
},
complete: {
badge: "Challenge Complete",
title: "Paradox Resolved",
copy: "You reframed the migration into a sequence stakeholders can accept.",
detail: "Value and stability can coexist when delivery is phased.",
tone: "success"
}
};
function Ue(o) {
if (typeof o != "string")
return E;
const i = o.trim();
return i ? i.replace(/\/+$/, "") : E;
}
function y(o, i) {
return `${o}/${i}`;
}
function S(o, i) {
const n = o === "A" ? Re : He, s = Math.floor(Math.random() * n) + 1;
return y(i, `rejection${o}_${s}.png`);
}
function N({
src: o,
alt: i,
fallback: n,
onImageError: s
}) {
return /* @__PURE__ */ a("div", { className: e.imageFrame, children: o ? /* @__PURE__ */ a(
"img",
{
src: o,
alt: i,
className: e.sceneImage,
onError: () => s(o)
}
) : /* @__PURE__ */ t(
"div",
{
className: e.sceneFallback,
"data-tone": n.tone,
role: "img",
"aria-label": i,
children: [
/* @__PURE__ */ a("div", { className: e.sceneFallbackGlow }),
/* @__PURE__ */ t("div", { className: e.sceneFallbackHud, children: [
/* @__PURE__ */ a("span", { className: e.sceneFallbackBadge, children: n.badge }),
/* @__PURE__ */ a("span", { className: e.sceneFallbackSignal, children: "GLITCH SIM" })
] }),
/* @__PURE__ */ t("div", { className: e.sceneFallbackCopy, children: [
/* @__PURE__ */ a("p", { className: e.sceneFallbackKicker, children: n.copy }),
/* @__PURE__ */ a("h3", { className: e.sceneFallbackTitle, children: n.title }),
/* @__PURE__ */ a("p", { className: e.sceneFallbackDetail, children: n.detail })
] }),
/* @__PURE__ */ t("div", { className: e.sceneFallbackBars, "aria-hidden": "true", children: [
/* @__PURE__ */ a("span", {}),
/* @__PURE__ */ a("span", {}),
/* @__PURE__ */ a("span", {})
] })
]
}
) });
}
function Oe({
config: o,
onComplete: i,
onProgress: n,
theme: s,
className: j
}) {
const k = (o == null ? void 0 : o.params) ?? {}, [h, p] = b("intro"), [l, T] = b({
loopCount: 0,
valueAttempts: 0,
sameAttempts: 0
}), [B, D] = b(!1), [F, f] = b(""), [w, M] = b({}), r = I(
() => Ue(k.assetBaseUrl ?? k.imageBaseUrl),
[k.assetBaseUrl, k.imageBaseUrl]
), x = I(() => ({
presenting: y(r, "presenting.png"),
insight: y(r, "insight.png"),
complete: y(r, "complete.png")
}), [r]), L = {
"--gc-primary": (s == null ? void 0 : s.primary) || "#6366f1",
"--gc-accent": (s == null ? void 0 : s.accent) || "#22d3ee",
"--gc-bg": (s == null ? void 0 : s.bg) || "#0a0a0f",
"--gc-bg-secondary": (s == null ? void 0 : s.bgSecondary) || "#12121a",
"--gc-text": (s == null ? void 0 : s.text) || "#e8e8ec",
"--gc-text-muted": (s == null ? void 0 : s.textMuted) || "#9999a8",
"--gc-border": (s == null ? void 0 : s.border) || "#2a2a3a"
}, m = l.valueAttempts + l.sameAttempts, v = m >= 4, u = d((c) => w[c] ? void 0 : c, [w]), g = d((c) => {
M((C) => C[c] ? C : { ...C, [c]: !0 });
}, []), R = d(() => {
p("choice"), n == null || n(10);
}, [n]), H = d(() => {
f(S("A", r)), T((c) => ({
...c,
valueAttempts: c.valueAttempts + 1,
loopCount: c.loopCount + (c.sameAttempts > c.valueAttempts ? 0.5 : 0)
})), p("rejection-value"), n == null || n(Math.min(30 + m * 10, 80));
}, [r, m, n]), U = d(() => {
f(S("B", r)), T((c) => ({
...c,
sameAttempts: c.sameAttempts + 1,
loopCount: c.loopCount + (c.valueAttempts > c.sameAttempts ? 0.5 : 0)
})), p("rejection-same"), n == null || n(Math.min(30 + m * 10, 80));
}, [r, m, n]), A = d(() => {
p("choice");
}, []), q = d(() => {
D(!0), p("awareness"), n == null || n(90);
}, [n]), Y = d(() => {
p("complete"), n == null || n(100), i({
success: !0,
score: 100,
data: {
loopsBeforeInsight: Math.floor(l.loopCount),
totalAttempts: m,
valueAttempts: l.valueAttempts,
sameAttempts: l.sameAttempts
},
rewards: {
paradoxes: [{
id: "migration-paradox",
name: "The Migration Paradox",
description: "Stakeholders simultaneously demand that a migration adds value AND changes nothing.",
rarity: "uncommon"
}]
}
});
}, [i, n, l, m]);
return /* @__PURE__ */ t("div", { className: `${e.container} ${j || ""}`, style: L, children: [
h === "intro" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(x.presenting),
alt: "Presenting to stakeholders",
fallback: _.presenting,
onImageError: g
}
),
/* @__PURE__ */ t("div", { className: e.dialogueBox, children: [
/* @__PURE__ */ a("h2", { className: e.title, children: "The Migration Paradox" }),
/* @__PURE__ */ a("p", { className: e.description, children: "You've been tasked with migrating the core system. Your stakeholders are waiting for your strategy." }),
/* @__PURE__ */ a("button", { className: e.actionButton, onClick: R, children: "▶ Present Your Strategy" })
] })
] }),
h === "choice" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(x.presenting),
alt: "Presenting options",
fallback: _.presenting,
onImageError: g
}
),
/* @__PURE__ */ t("div", { className: e.dialogueBox, children: [
/* @__PURE__ */ t("div", { className: e.dialogueHeader, children: [
/* @__PURE__ */ a("h2", { className: e.title, children: "Choose Your Approach" }),
l.loopCount > 0 && /* @__PURE__ */ t("span", { className: e.loopBadge, children: [
"LOOP ",
Math.floor(l.loopCount) + 1
] })
] }),
/* @__PURE__ */ a("p", { className: e.description, children: "How will you pitch the migration project?" }),
/* @__PURE__ */ t("div", { className: e.choices, children: [
/* @__PURE__ */ t(
"button",
{
className: e.choiceButton,
onClick: H,
children: [
/* @__PURE__ */ a("span", { className: e.choiceKey, children: "A" }),
/* @__PURE__ */ t("span", { className: e.choiceContent, children: [
/* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize Change" }),
/* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"The new system will add value and enable new capabilities"' })
] })
]
}
),
/* @__PURE__ */ t(
"button",
{
className: e.choiceButton,
onClick: U,
children: [
/* @__PURE__ */ a("span", { className: e.choiceKey, children: "B" }),
/* @__PURE__ */ t("span", { className: e.choiceContent, children: [
/* @__PURE__ */ a("span", { className: e.choiceTitle, children: "Emphasize No Change" }),
/* @__PURE__ */ a("span", { className: e.choiceDesc, children: '"Everything will work exactly the same as before"' })
] })
]
}
)
] }),
v && !B && /* @__PURE__ */ a(
"button",
{
className: e.insightButton,
onClick: q,
children: "✦ Wait... I see the pattern"
}
)
] })
] }),
h === "rejection-value" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(F),
alt: "Stakeholder rejection",
fallback: _["rejection-value"],
onImageError: g
}
),
/* @__PURE__ */ t("div", { className: e.dialogueBox, children: [
/* @__PURE__ */ t("div", { className: e.rejection, children: [
/* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }),
/* @__PURE__ */ a("p", { className: e.quote, children: '"Are you insane? This will break everything!"' }),
/* @__PURE__ */ a("p", { className: e.explanation, children: `"If you want to change the core system, you need to make absolutely sure that everything works exactly the same. We can't risk any disruption."` })
] }),
/* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }),
v && !B && /* @__PURE__ */ a(
"button",
{
className: e.insightButton,
onClick: q,
children: "✦ Wait... I see the pattern"
}
)
] })
] }),
h === "rejection-same" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(F),
alt: "Stakeholder rejection",
fallback: _["rejection-same"],
onImageError: g
}
),
/* @__PURE__ */ t("div", { className: e.dialogueBox, children: [
/* @__PURE__ */ t("div", { className: e.rejection, children: [
/* @__PURE__ */ a("span", { className: e.rejectionBadge, children: "✗ REJECTED" }),
/* @__PURE__ */ a("p", { className: e.quote, children: '"This is insane. Why would we do this?"' }),
/* @__PURE__ */ a("p", { className: e.explanation, children: `"If everything is going to stay exactly the same, why would we spend all this time and money replacing the core system? What's the point?"` })
] }),
/* @__PURE__ */ a("button", { className: e.actionButton, onClick: A, children: "▶ Try a Different Approach" }),
v && !B && /* @__PURE__ */ a(
"button",
{
className: e.insightButton,
onClick: q,
children: "✦ Wait... I see the pattern"
}
)
] })
] }),
h === "awareness" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(x.insight),
alt: "Insight moment",
fallback: _.awareness,
onImageError: g
}
),
/* @__PURE__ */ t("div", { className: e.dialogueBox, children: [
/* @__PURE__ */ t("div", { className: e.insight, children: [
/* @__PURE__ */ a("h2", { className: e.insightTitle, children: "★ The Paradox Revealed ★" }),
/* @__PURE__ */ t("p", { className: e.insightText, children: [
"You've discovered the ",
/* @__PURE__ */ a("strong", { children: "Migration Paradox" }),
": stakeholders demand that you change things - to give value. But also that nothing changes, to contain risk."
] }),
/* @__PURE__ */ t("p", { className: e.insightText, children: [
"The solution is ",
/* @__PURE__ */ a("strong", { children: "phased delivery" }),
". First, prove business case. Then prove you can preserve existing functionality. Then introduce new capabilities."
] }),
/* @__PURE__ */ t("div", { className: e.paradoxDiagram, children: [
/* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Explore"' }),
/* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }),
/* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Preserve"' }),
/* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" }),
/* @__PURE__ */ a("div", { className: e.paradoxNode, children: '"Innovate"' }),
/* @__PURE__ */ a("div", { className: e.paradoxArrow, children: "→" })
] })
] }),
/* @__PURE__ */ a("button", { className: e.completeButton, onClick: Y, children: "▶ Complete Challenge" })
] })
] }),
h === "complete" && /* @__PURE__ */ t("div", { className: e.panel, children: [
/* @__PURE__ */ a(
N,
{
src: u(x.complete),
alt: "Challenge complete",
fallback: _.complete,
onImageError: g
}
),
/* @__PURE__ */ a("div", { className: e.dialogueBox, children: /* @__PURE__ */ t("div", { className: e.successBox, children: [
/* @__PURE__ */ a("h2", { className: e.successTitle, children: "★ CHALLENGE COMPLETE ★" }),
/* @__PURE__ */ t("p", { className: e.stats, children: [
"You experienced ",
Math.floor(l.loopCount),
" loop(s) before seeing the pattern."
] }),
/* @__PURE__ */ t("div", { className: e.scoreDisplay, children: [
/* @__PURE__ */ a("span", { className: e.scoreLabel, children: "SCORE" }),
/* @__PURE__ */ a("span", { className: e.scoreValue, children: "100" })
] })
] }) })
] })
] });
}
const Ve = {
name: "migration-paradox",
displayName: "The Migration Paradox",
version: "1.0.0",
paramSchema: {
assetBaseUrl: {
type: "string",
label: "Asset Base URL",
description: "Shared CDN or public folder containing presenting.png, insight.png, complete.png, rejectionA_1.png, rejectionA_2.png, and rejectionB_1.png.",
default: "/glitch/migration-paradox"
}
},
defaultParams: {
assetBaseUrl: "/glitch/migration-paradox"
}
};
export {
Oe as default,
Ve as metadata
};
//# sourceMappingURL=migration-paradox.js.map