423 lines
28 KiB
JavaScript
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;lef
|
||
|
|
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
|