@pieai/swimmer-ui-kit 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,19 +1,20 @@
1
1
  import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
2
- import { cloneElement as r, createContext as i, forwardRef as a, isValidElement as o, useContext as s, useEffect as c, useId as l, useRef as u, useState as d } from "react";
2
+ import { cloneElement as r, createContext as i, forwardRef as a, isValidElement as o, useCallback as s, useContext as c, useEffect as l, useId as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
3
+ import { createPortal as h } from "react-dom";
3
4
  //#region src/interactionSound.ts
4
- var f = null, p = !1;
5
- function m(e) {
5
+ var g = null, _ = !1;
6
+ function v(e) {
6
7
  return typeof e != "number" || !Number.isFinite(e) ? 1 : Math.min(1, Math.max(0, e));
7
8
  }
8
- function h() {
9
- p || typeof document > "u" || (document.addEventListener("visibilitychange", () => {
10
- document.visibilityState === "hidden" && f?.state === "running" && f.suspend();
11
- }), p = !0);
9
+ function y() {
10
+ _ || typeof document > "u" || (document.addEventListener("visibilitychange", () => {
11
+ document.visibilityState === "hidden" && g?.state === "running" && g.suspend();
12
+ }), _ = !0);
12
13
  }
13
- function g() {
14
- return typeof window > "u" || window.AudioContext === void 0 ? null : (h(), f ??= new window.AudioContext(), f);
14
+ function b() {
15
+ return typeof window > "u" || window.AudioContext === void 0 ? null : (y(), g ??= new window.AudioContext(), g);
15
16
  }
16
- function _(e) {
17
+ function x(e) {
17
18
  let t = /* @__PURE__ */ new WeakMap();
18
19
  return {
19
20
  createGain: () => {
@@ -50,21 +51,21 @@ function _(e) {
50
51
  suspend: () => e.suspend()
51
52
  };
52
53
  }
53
- function v(e, t = {}) {
54
+ function S(e, t = {}) {
54
55
  if (t.enabled === !1) return !1;
55
- let n = .06 * m(t.masterVolume) * m(t.sfxVolume);
56
+ let n = .06 * v(t.masterVolume) * v(t.sfxVolume);
56
57
  if (n <= 0) return !1;
57
58
  e.state === "suspended" && e.resume();
58
59
  let r = e.currentTime, i = e.createOscillator(), a = e.createGain();
59
60
  return i.type = "triangle", i.frequency.setValueAtTime(420, r), i.frequency.exponentialRampToValueAtTime(620, r + .045), a.gain.setValueAtTime(1e-4, r), a.gain.exponentialRampToValueAtTime(n, r + .008), a.gain.exponentialRampToValueAtTime(1e-4, r + .055), i.connect(a), a.connect(e.destination), i.start(r), i.stop(r + .055), !0;
60
61
  }
61
- function y(e = {}) {
62
- let t = g();
63
- return t ? v(_(t), e) : !1;
62
+ function C(e = {}) {
63
+ let t = b();
64
+ return t ? S(x(t), e) : !1;
64
65
  }
65
66
  //#endregion
66
67
  //#region src/GameButton.tsx
67
- function b({ children: e, className: n, onClick: r, sound: i = !1, static: a = !1, type: o = "button", variant: s = "secondary", ...c }) {
68
+ function w({ children: e, className: n, onClick: r, sound: i = !1, static: a = !1, type: o = "button", variant: s = "secondary", ...c }) {
68
69
  return /* @__PURE__ */ t("button", {
69
70
  className: [
70
71
  "game-ui-button",
@@ -73,7 +74,7 @@ function b({ children: e, className: n, onClick: r, sound: i = !1, static: a = !
73
74
  n
74
75
  ].filter(Boolean).join(" "),
75
76
  onClick: (e) => {
76
- i && y(i), r?.(e);
77
+ i && C(i), r?.(e);
77
78
  },
78
79
  type: o,
79
80
  ...c,
@@ -82,28 +83,28 @@ function b({ children: e, className: n, onClick: r, sound: i = !1, static: a = !
82
83
  }
83
84
  //#endregion
84
85
  //#region src/liquidMetalBudget.ts
85
- var x = 2, S = 2, C = 0;
86
- function ee() {
86
+ var T = 2, E = 2, D = 0;
87
+ function O() {
87
88
  return {
88
- limit: S,
89
- used: C
89
+ limit: E,
90
+ used: D
90
91
  };
91
92
  }
92
- function w(e) {
93
- S = Number.isFinite(e) ? Math.max(0, Math.floor(e)) : 0;
93
+ function ee(e) {
94
+ E = Number.isFinite(e) ? Math.max(0, Math.floor(e)) : 0;
94
95
  }
95
- function T() {
96
- return C >= S ? !1 : (C += 1, !0);
96
+ function k() {
97
+ return D >= E ? !1 : (D += 1, !0);
97
98
  }
98
99
  function te() {
99
- C > 0 && --C;
100
+ D > 0 && --D;
100
101
  }
101
- function E(e) {
102
+ function ne(e) {
102
103
  return !(e.renderer === "css" || !e.hasWebGL2 || e.prefersReducedMotion || !e.isInViewport);
103
104
  }
104
105
  //#endregion
105
106
  //#region src/liquidMetalWebGL.ts
106
- var ne = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", D = "#version 300 es\nprecision highp float;\nout vec4 o;\n\nuniform vec2 uC; // pill centre, device px\nuniform vec2 uHalf; // pill half-extent, device px\nuniform float uT; // seconds\nuniform float uHover; // 0..1\nuniform float uPress; // 0..1, eased\nuniform vec4 uRip[3]; // xy centre (button heights, +y down), z start, w live\nuniform vec4 uRipK; // speed, ring width, decay, amplitude\nuniform vec4 uRipK2; // facet depth, facet count, crest sharpness, emission\nuniform vec4 uPtr; // xy trailing cursor, z strength, w normalised speed\nuniform vec4 uPtrK; // radius, base amplitude, speed amplitude, rim lift\nuniform vec3 uAccent; // brand tint from computed --game-ui-liquid-metal-accent\n\n#define PI 3.14159265\n\nfloat sdPill(vec2 p, vec2 b, float r){\n vec2 q = abs(p) - b + r;\n return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\n}\n\n/* Expanding ring from each press, in button-height units. Three slots so a\n quick double-tap overlaps instead of cutting the first one off.\n\n Two things keep it from reading as a water ripple: the wavefront is\n faceted rather than circular — its radius is modulated by angle, and the\n facets rotate as it travels — and the crest profile is a cusp rather than\n a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\nfloat ripple(vec2 p, float t){\n float sum = 0.;\n for(int i = 0; i < 3; i++){\n if(uRip[i].w < 0.5) continue;\n float age = t - uRip[i].z;\n if(age < 0. || age > 4.) continue;\n vec2 rp = p - uRip[i].xy;\n float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\n float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\n sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\n }\n return sum;\n}\n\n/* A soft well under the cursor. It lags behind the real pointer and swells\n with speed, so moving across the button drags the metal rather than sliding\n a static blob over it. */\nfloat pointerW(vec2 p){\n if(uPtr.z < 0.001) return 0.;\n float d = length(p - uPtr.xy) / uPtrK.x;\n return exp(-d*d) * uPtr.z;\n}\n/* Displacing the sample point, not the field value, is what makes this read as\n liquid: the bands bulge and stretch around the cursor like a lens instead of\n just getting brighter under it. */\nvec2 pointerWarp(vec2 p){\n float w = pointerW(p);\n if(w <= 0.) return vec2(0.);\n return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\n}\n", re = `${D}
107
+ var A = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", j = "#version 300 es\nprecision highp float;\nout vec4 o;\n\nuniform vec2 uC; // pill centre, device px\nuniform vec2 uHalf; // pill half-extent, device px\nuniform float uT; // seconds\nuniform float uHover; // 0..1\nuniform float uPress; // 0..1, eased\nuniform vec4 uRip[3]; // xy centre (button heights, +y down), z start, w live\nuniform vec4 uRipK; // speed, ring width, decay, amplitude\nuniform vec4 uRipK2; // facet depth, facet count, crest sharpness, emission\nuniform vec4 uPtr; // xy trailing cursor, z strength, w normalised speed\nuniform vec4 uPtrK; // radius, base amplitude, speed amplitude, rim lift\nuniform vec3 uAccent; // brand tint from computed --game-ui-liquid-metal-accent\n\n#define PI 3.14159265\n\nfloat sdPill(vec2 p, vec2 b, float r){\n vec2 q = abs(p) - b + r;\n return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\n}\n\n/* Expanding ring from each press, in button-height units. Three slots so a\n quick double-tap overlaps instead of cutting the first one off.\n\n Two things keep it from reading as a water ripple: the wavefront is\n faceted rather than circular — its radius is modulated by angle, and the\n facets rotate as it travels — and the crest profile is a cusp rather than\n a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\nfloat ripple(vec2 p, float t){\n float sum = 0.;\n for(int i = 0; i < 3; i++){\n if(uRip[i].w < 0.5) continue;\n float age = t - uRip[i].z;\n if(age < 0. || age > 4.) continue;\n vec2 rp = p - uRip[i].xy;\n float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\n float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\n sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\n }\n return sum;\n}\n\n/* A soft well under the cursor. It lags behind the real pointer and swells\n with speed, so moving across the button drags the metal rather than sliding\n a static blob over it. */\nfloat pointerW(vec2 p){\n if(uPtr.z < 0.001) return 0.;\n float d = length(p - uPtr.xy) / uPtrK.x;\n return exp(-d*d) * uPtr.z;\n}\n/* Displacing the sample point, not the field value, is what makes this read as\n liquid: the bands bulge and stretch around the cursor like a lens instead of\n just getting brighter under it. */\nvec2 pointerWarp(vec2 p){\n float w = pointerW(p);\n if(w <= 0.) return vec2(0.);\n return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\n}\n", M = `${j}
107
108
  uniform float uBw; // stroke half-width, device px
108
109
  uniform float uE[8]; // base, hot, chroma-across, chroma-along, speed,
109
110
  // topBias, press lift, ripple lift
@@ -173,7 +174,7 @@ void main(){
173
174
  // what make it metal, and replacing them with a flat accent would turn
174
175
  // the rim into a neon sticker.
175
176
  o.rgb *= mix(vec3(1.0), uAccent, 0.40);
176
- }`, ie = `${D}
177
+ }`, re = `${j}
177
178
  uniform float uP[21]; // tunables
178
179
 
179
180
  float h21(vec2 p){
@@ -295,7 +296,7 @@ void main(){
295
296
  col = col * (1. + rip * 1.15 + well * 0.60);
296
297
 
297
298
  o = vec4(col * pill * uHover, pill);
298
- }`, ae = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex, uTex2;\nuniform vec2 uDstTexel; // 1 / destination size (maps dest fragCoord -> uv)\nuniform vec2 uSrcTexel; // 1 / source size (tap spacing)\nuniform float uAdd; // 1 to include uTex2\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uDstTexel;\n // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\n // they land exactly on the four source texel centres. Spacing them by a\n // whole source texel instead — as this did originally — skips every other\n // pixel, and any fine detail in the field folds down into low-frequency\n // moiré that no amount of subsequent blurring can remove.\n vec2 e = uDstTexel * 0.25;\n vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\n + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\n s *= 0.25;\n if(uAdd > 0.5){\n vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\n + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\n s.rgb += r.rgb * 0.25;\n }\n o = s;\n}", oe = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uTexel;\n vec2 st = uTexel * uDir * uR;\n vec4 s = texture(uTex, uv) * 0.1964;\n s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\n s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\n s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\n o = s;\n}", O = `${D}
299
+ }`, ie = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex, uTex2;\nuniform vec2 uDstTexel; // 1 / destination size (maps dest fragCoord -> uv)\nuniform vec2 uSrcTexel; // 1 / source size (tap spacing)\nuniform float uAdd; // 1 to include uTex2\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uDstTexel;\n // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\n // they land exactly on the four source texel centres. Spacing them by a\n // whole source texel instead — as this did originally — skips every other\n // pixel, and any fine detail in the field folds down into low-frequency\n // moiré that no amount of subsequent blurring can remove.\n vec2 e = uDstTexel * 0.25;\n vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\n + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\n s *= 0.25;\n if(uAdd > 0.5){\n vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\n + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\n s.rgb += r.rgb * 0.25;\n }\n o = s;\n}", ae = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uTexel;\n vec2 st = uTexel * uDir * uR;\n vec4 s = texture(uTex, uv) * 0.1964;\n s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\n s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\n s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\n o = s;\n}", N = `${j}
299
300
  uniform sampler2D uSoft, uRim, uGlow;
300
301
  uniform vec2 uRes;
301
302
  uniform float uGlowGain, uGlowIn, uOccl, uDim, uPunch;
@@ -344,7 +345,7 @@ void main(){
344
345
  // CSS underneath, and this layer adds light on top of them
345
346
  float a = clamp(max(rgb.r, max(rgb.g, rgb.b)), 0., 1.);
346
347
  o = vec4(min(rgb, vec3(1.)), a);
347
- }`, se = {
348
+ }`, P = {
348
349
  valFreq: .5,
349
350
  valAmp: .55,
350
351
  dens: 2.4,
@@ -366,7 +367,7 @@ void main(){
366
367
  litLo: -.26,
367
368
  litHi: .1,
368
369
  dim: .44
369
- }, ce = Object.keys(se), le = {
370
+ }, oe = Object.keys(P), se = {
370
371
  base: .2,
371
372
  hot: .82,
372
373
  chromA: .42,
@@ -375,14 +376,14 @@ void main(){
375
376
  top: .35,
376
377
  press: .85,
377
378
  ripple: 1.6
378
- }, ue = Object.keys(le), k = {
379
+ }, ce = Object.keys(se), le = {
379
380
  glow: 1.95,
380
381
  glowR: 1.3,
381
382
  glowIn: .3,
382
383
  occl: .62,
383
384
  soften: .24,
384
385
  punch: 1.5
385
- }, A = {
386
+ }, F = {
386
387
  speed: 1.85,
387
388
  width: .2,
388
389
  decay: 1.35,
@@ -398,7 +399,7 @@ void main(){
398
399
  ptrLag: .0016,
399
400
  ptrVref: 4.5
400
401
  };
401
- function de(e) {
402
+ function ue(e) {
402
403
  let t = e.trim(), n = /^#([0-9a-f]{3,8})$/i.exec(t);
403
404
  if (n?.[1]) {
404
405
  let e = n[1];
@@ -423,11 +424,11 @@ function de(e) {
423
424
  1
424
425
  ];
425
426
  }
426
- function fe(e, t, n) {
427
+ function de(e, t, n) {
427
428
  let r = Number.parseFloat(e.getPropertyValue(t).trim());
428
429
  return Number.isFinite(r) ? r : n;
429
430
  }
430
- function pe(e, t) {
431
+ function fe(e, t) {
431
432
  let n = (e) => t[e] ?? null;
432
433
  return {
433
434
  f1: (t, r) => e.uniform1f(n(t), r),
@@ -439,7 +440,7 @@ function pe(e, t) {
439
440
  i1: (t, r) => e.uniform1i(n(t), r)
440
441
  };
441
442
  }
442
- function me(e, t, n) {
443
+ function pe(e, t, n) {
443
444
  if (typeof e.getContext != "function") return null;
444
445
  let r = null;
445
446
  try {
@@ -455,21 +456,21 @@ function me(e, t, n) {
455
456
  if (!r) return null;
456
457
  let i = r;
457
458
  try {
458
- return M(i, e, t, n);
459
+ return he(i, e, t, n);
459
460
  } catch {
460
461
  return i.getExtension("WEBGL_lose_context")?.loseContext(), null;
461
462
  }
462
463
  }
463
- function he(e, t, n) {
464
+ function me(e, t, n) {
464
465
  let r = e.createShader(t);
465
466
  if (!r) throw Error("liquid-metal: createShader returned null");
466
467
  if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) throw Error(e.getShaderInfoLog(r) ?? "liquid-metal: shader compile failed");
467
468
  return r;
468
469
  }
469
- function j(e, t) {
470
+ function I(e, t) {
470
471
  let n = e.createProgram();
471
472
  if (!n) throw Error("liquid-metal: createProgram returned null");
472
- if (e.attachShader(n, he(e, e.VERTEX_SHADER, ne)), e.attachShader(n, he(e, e.FRAGMENT_SHADER, t)), e.bindAttribLocation(n, 0, "position"), e.linkProgram(n), !e.getProgramParameter(n, e.LINK_STATUS)) throw Error(e.getProgramInfoLog(n) ?? "liquid-metal: program link failed");
473
+ if (e.attachShader(n, me(e, e.VERTEX_SHADER, A)), e.attachShader(n, me(e, e.FRAGMENT_SHADER, t)), e.bindAttribLocation(n, 0, "position"), e.linkProgram(n), !e.getProgramParameter(n, e.LINK_STATUS)) throw Error(e.getProgramInfoLog(n) ?? "liquid-metal: program link failed");
473
474
  let r = {}, i = e.getProgramParameter(n, e.ACTIVE_UNIFORMS);
474
475
  for (let t = 0; t < i; t += 1) {
475
476
  let i = e.getActiveUniform(n, t);
@@ -480,8 +481,8 @@ function j(e, t) {
480
481
  u: r
481
482
  };
482
483
  }
483
- function M(e, t, n, r) {
484
- let i = j(e, ie), a = j(e, re), o = j(e, ae), s = j(e, oe), c = j(e, O), l = e.createVertexArray(), u = e.createBuffer();
484
+ function he(e, t, n, r) {
485
+ let i = I(e, re), a = I(e, M), o = I(e, ie), s = I(e, ae), c = I(e, N), l = e.createVertexArray(), u = e.createBuffer();
485
486
  if (!l || !u) throw Error("liquid-metal: VAO/VBO unavailable");
486
487
  e.bindVertexArray(l), e.bindBuffer(e.ARRAY_BUFFER, u), e.bufferData(e.ARRAY_BUFFER, new Float32Array([
487
488
  -1,
@@ -505,22 +506,22 @@ function M(e, t, n, r) {
505
506
  function p(t, n, r) {
506
507
  t.w === n && t.h === r || (t.w = n, t.h = r, e.bindTexture(e.TEXTURE_2D, t.tex), d ? e.texImage2D(e.TEXTURE_2D, 0, e.RGBA16F, n, r, 0, e.RGBA, e.HALF_FLOAT, null) : e.texImage2D(e.TEXTURE_2D, 0, e.RGBA8, n, r, 0, e.RGBA, e.UNSIGNED_BYTE, null), e.bindFramebuffer(e.FRAMEBUFFER, t.fbo), e.checkFramebufferStatus(e.FRAMEBUFFER) !== e.FRAMEBUFFER_COMPLETE && (e.bindTexture(e.TEXTURE_2D, t.tex), e.texImage2D(e.TEXTURE_2D, 0, e.RGBA8, n, r, 0, e.RGBA, e.UNSIGNED_BYTE, null)));
507
508
  }
508
- let m = f(), h = f(), g = f(), _ = f(), v = f(), y = f(), b = 0, x = 0, S = 0, C = 0, ee = 0, w = 0, T = 4, te = !0, E = document.createElement("span");
509
- E.setAttribute("aria-hidden", "true"), E.style.cssText = "position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;color:var(--game-ui-liquid-metal-accent)", r.appendChild(E);
510
- function ne() {
509
+ let m = f(), h = f(), g = f(), _ = f(), v = f(), y = f(), b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 4, D = !0, O = document.createElement("span");
510
+ O.setAttribute("aria-hidden", "true"), O.style.cssText = "position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;color:var(--game-ui-liquid-metal-accent)", r.appendChild(O);
511
+ function ee() {
511
512
  let e = n.getBoundingClientRect(), r = Math.min(window.devicePixelRatio || 1, 2), i = 900 / 516 * Math.max(e.height, 1), a = e.width + i * 2, o = e.height + i * 2;
512
513
  t.style.width = `${a}px`, t.style.height = `${o}px`;
513
514
  let s = Math.max(2, Math.round(a * r)), c = Math.max(2, Math.round(o * r));
514
- (s !== b || c !== x) && (b = s, x = c, t.width = b, t.height = x), S = e.width * r, C = e.height * r, ee = b / 2, w = x / 2, p(m, b, x), p(h, b, x);
515
+ (s !== b || c !== x) && (b = s, x = c, t.width = b, t.height = x), S = e.width * r, C = e.height * r, w = b / 2, T = x / 2, p(m, b, x), p(h, b, x);
515
516
  let l = Math.max(2, Math.ceil(b / 2)), u = Math.max(2, Math.ceil(x / 2));
516
- p(g, l, u), p(_, l, u), T = Math.max(1, Math.min(4, Math.round(Math.max(C, 110) / 129)));
517
- let d = Math.max(2, Math.ceil(b / T)), f = Math.max(2, Math.ceil(x / T));
518
- p(v, d, f), p(y, d, f), te = !1;
517
+ p(g, l, u), p(_, l, u), E = Math.max(1, Math.min(4, Math.round(Math.max(C, 110) / 129)));
518
+ let d = Math.max(2, Math.ceil(b / E)), f = Math.max(2, Math.ceil(x / E));
519
+ p(v, d, f), p(y, d, f), D = !1;
519
520
  }
520
- function D(t) {
521
+ function k(t) {
521
522
  e.bindFramebuffer(e.FRAMEBUFFER, t ? t.fbo : null), e.viewport(0, 0, t ? t.w : b, t ? t.h : x), e.drawArrays(e.TRIANGLES, 0, 3);
522
523
  }
523
- let me = new Float32Array(ce.length), he = new Float32Array(ue.length), M = 0, N = 0, ge = 0, _e = performance.now(), ve = [
524
+ let te = new Float32Array(oe.length), ne = new Float32Array(ce.length), A = 0, j = 0, pe = 0, me = performance.now(), he = [
524
525
  0,
525
526
  1,
526
527
  2
@@ -529,153 +530,153 @@ function M(e, t, n, r) {
529
530
  y: 0,
530
531
  t: -99,
531
532
  on: 0
532
- })), P = /* @__PURE__ */ new Float32Array(12), F = 0, I = 0, ye = 0, L = {
533
+ })), L = /* @__PURE__ */ new Float32Array(12), R = 0, ge = 0, _e = 0, z = {
533
534
  x: 0,
534
535
  y: 0
535
- }, R = {
536
+ }, B = {
536
537
  x: 0,
537
538
  y: 0
538
- }, z = 0, B = 0, V = {
539
+ }, ve = 0, ye = 0, V = {
539
540
  over: !1,
540
541
  press: !1,
541
542
  focus: !1
542
543
  };
543
544
  function H(e, t) {
544
- let n = ve[F];
545
- n && (F = (F + 1) % ve.length, n.x = e, n.y = t, n.t = ge, n.on = 1);
545
+ let n = he[R];
546
+ n && (R = (R + 1) % he.length, n.x = e, n.y = t, n.t = pe, n.on = 1);
546
547
  }
547
548
  function U(e) {
548
549
  let t = n.getBoundingClientRect(), r = t.height || 1;
549
550
  return [(e.clientX - (t.left + t.width / 2)) / r, (e.clientY - (t.top + t.height / 2)) / r];
550
551
  }
551
552
  function W() {
552
- N = V.over || V.press || V.focus ? 1 : 0, ye = +!!V.press;
553
+ j = V.over || V.press || V.focus ? 1 : 0, _e = +!!V.press;
553
554
  }
554
- let be = window.matchMedia("(prefers-reduced-motion: reduce)"), xe = null, G = 0, K = !1, Se = !1;
555
- function Ce() {
555
+ let be = window.matchMedia("(prefers-reduced-motion: reduce)"), xe = null, G = 0, Se = !1, Ce = !1;
556
+ function we() {
556
557
  let e = getComputedStyle(n);
557
- return le.base = fe(e, "--game-ui-liquid-metal-rest", le.base), le.speed = fe(e, "--game-ui-liquid-metal-sweep-speed", le.speed), se.disp = fe(e, "--game-ui-liquid-metal-dispersion", se.disp), k.glow = fe(e, "--game-ui-liquid-metal-bloom", k.glow), { accent: de(getComputedStyle(E).color) };
558
+ return se.base = de(e, "--game-ui-liquid-metal-rest", se.base), se.speed = de(e, "--game-ui-liquid-metal-sweep-speed", se.speed), P.disp = de(e, "--game-ui-liquid-metal-dispersion", P.disp), le.glow = de(e, "--game-ui-liquid-metal-bloom", le.glow), { accent: ue(getComputedStyle(O).color) };
558
559
  }
559
- function we(t) {
560
- if (G = 0, K || Se) return;
561
- let r = (t - _e) / 1e3;
562
- _e = t;
560
+ function Te(t) {
561
+ if (G = 0, Se || Ce) return;
562
+ let r = (t - me) / 1e3;
563
+ me = t;
563
564
  let l = Math.min(r, 1 / 20);
564
- be.matches || (ge += l);
565
- let u = N > M ? 1 - .0012 ** l : 1 - 12e-5 ** l;
566
- M += (N - M) * u, Math.abs(N - M) < 8e-4 && (M = N);
567
- let d = ye > I ? 1 - 1e-9 ** l : 1 - .004 ** l;
568
- I += (ye - I) * d, Math.abs(ye - I) < .002 && (I = ye);
565
+ be.matches || (pe += l);
566
+ let u = j > A ? 1 - .0012 ** l : 1 - 12e-5 ** l;
567
+ A += (j - A) * u, Math.abs(j - A) < 8e-4 && (A = j);
568
+ let d = _e > ge ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
+ ge += (_e - ge) * d, Math.abs(_e - ge) < .002 && (ge = _e);
569
570
  let f = !1;
570
- for (let e = 0; e < ve.length; e += 1) {
571
- let t = ve[e];
572
- t && (t.on && ge - t.t > 4 && (t.on = 0), t.on && (f = !0), P[e * 4] = t.x, P[e * 4 + 1] = t.y, P[e * 4 + 2] = t.t, P[e * 4 + 3] = t.on);
571
+ for (let e = 0; e < he.length; e += 1) {
572
+ let t = he[e];
573
+ t && (t.on && pe - t.t > 4 && (t.on = 0), t.on && (f = !0), L[e * 4] = t.x, L[e * 4 + 1] = t.y, L[e * 4 + 2] = t.t, L[e * 4 + 3] = t.on);
573
574
  }
574
- let p = 1 - A.ptrLag ** +l, E = (L.x - R.x) * p, re = (L.y - R.y) * p;
575
- R.x += E, R.y += re;
576
- let ie = Math.min(Math.hypot(E, re) / Math.max(l, .001) / A.ptrVref, 1);
577
- B += (ie - B) * (1 - (ie > B ? .001 : .02) ** l);
578
- let ae = V.over || V.press ? 1 : 0;
579
- z += (ae - z) * (1 - .004 ** l), Math.abs(ae - z) < .002 && (z = ae), V.over = n.matches(":hover"), V.focus = n.matches(":focus-visible"), W(), te && ne();
580
- let oe = be.matches && !f && z < .002 ? `${M}|${I}|${b}|${x}` : null;
581
- if (oe !== null && oe === xe) {
582
- G = requestAnimationFrame(we);
575
+ let p = 1 - F.ptrLag ** +l, O = (z.x - B.x) * p, M = (z.y - B.y) * p;
576
+ B.x += O, B.y += M;
577
+ let re = Math.min(Math.hypot(O, M) / Math.max(l, .001) / F.ptrVref, 1);
578
+ ye += (re - ye) * (1 - (re > ye ? .001 : .02) ** l);
579
+ let ie = V.over || V.press ? 1 : 0;
580
+ ve += (ie - ve) * (1 - .004 ** l), Math.abs(ie - ve) < .002 && (ve = ie), V.over = n.matches(":hover"), V.focus = n.matches(":focus-visible"), W(), D && ee();
581
+ let ae = be.matches && !f && ve < .002 ? `${A}|${ge}|${b}|${x}` : null;
582
+ if (ae !== null && ae === xe) {
583
+ G = requestAnimationFrame(Te);
583
584
  return;
584
585
  }
585
- xe = oe;
586
- let { accent: O } = Ce();
587
- for (let e = 0; e < me.length; e += 1) {
588
- let t = ce[e];
589
- t && (me[e] = se[t]);
586
+ xe = ae;
587
+ let { accent: N } = we();
588
+ for (let e = 0; e < te.length; e += 1) {
589
+ let t = oe[e];
590
+ t && (te[e] = P[t]);
590
591
  }
591
- for (let e = 0; e < he.length; e += 1) {
592
- let t = ue[e];
593
- t && (he[e] = le[t]);
592
+ for (let e = 0; e < ne.length; e += 1) {
593
+ let t = ce[e];
594
+ t && (ne[e] = se[t]);
594
595
  }
595
- let de = Math.max(C, 110), fe = Math.max(2.4, de / 516 * 3.2), j = pe(e, i.u), F = pe(e, a.u), H = pe(e, o.u), U = pe(e, s.u), q = pe(e, c.u);
596
- e.useProgram(i.p), j.f2("uC", ee, w), j.f2("uHalf", S / 2, C / 2), j.f1("uT", ge), j.f1("uHover", M), j.f1("uPress", I), j.fv4("uRip", P), j.f4("uRipK", A.speed, A.width, A.decay, A.amp), j.f4("uRipK2", A.facet, A.lobes, A.sharp, A.emit), j.f4("uPtr", R.x, R.y, z, B), j.f4("uPtrK", A.ptrRad, A.ptrAmp, A.ptrFast, A.ptrRim), j.f3("uAccent", O[0], O[1], O[2]), j.fv1("uP", me), D(m), e.useProgram(a.p), F.f2("uC", ee, w), F.f2("uHalf", S / 2, C / 2), F.f1("uT", ge), F.f1("uBw", fe), F.f1("uPress", I), F.fv4("uRip", P), F.f4("uRipK", A.speed, A.width, A.decay, A.amp), F.f4("uRipK2", A.facet, A.lobes, A.sharp, A.emit), F.f4("uPtr", R.x, R.y, z, B), F.f4("uPtrK", A.ptrRad, A.ptrAmp, A.ptrFast, A.ptrRim), F.f3("uAccent", O[0], O[1], O[2]), F.fv1("uE", he), D(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), H.i1("uTex", 0), H.f1("uAdd", 0), H.f2("uDstTexel", 1 / g.w, 1 / g.h), H.f2("uSrcTexel", 1 / b, 1 / x), D(g), e.useProgram(s.p), U.i1("uTex", 0), U.f2("uTexel", 1 / g.w, 1 / g.h);
597
- let J = k.soften * (de * .5) * .95;
598
- if (J > .1) {
599
- let t = Math.min(4, Math.max(1, Math.ceil(J / 3)));
600
- U.f1("uR", J / Math.sqrt(t) / 1.95);
601
- for (let n = 0; n < t; n += 1) e.bindTexture(e.TEXTURE_2D, g.tex), U.f2("uDir", 1, 0), D(_), e.bindTexture(e.TEXTURE_2D, _.tex), U.f2("uDir", 0, 1), D(g);
596
+ let ue = Math.max(C, 110), de = Math.max(2.4, ue / 516 * 3.2), I = fe(e, i.u), R = fe(e, a.u), H = fe(e, o.u), U = fe(e, s.u), K = fe(e, c.u);
597
+ e.useProgram(i.p), I.f2("uC", w, T), I.f2("uHalf", S / 2, C / 2), I.f1("uT", pe), I.f1("uHover", A), I.f1("uPress", ge), I.fv4("uRip", L), I.f4("uRipK", F.speed, F.width, F.decay, F.amp), I.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), I.f4("uPtr", B.x, B.y, ve, ye), I.f4("uPtrK", F.ptrRad, F.ptrAmp, F.ptrFast, F.ptrRim), I.f3("uAccent", N[0], N[1], N[2]), I.fv1("uP", te), k(m), e.useProgram(a.p), R.f2("uC", w, T), R.f2("uHalf", S / 2, C / 2), R.f1("uT", pe), R.f1("uBw", de), R.f1("uPress", ge), R.fv4("uRip", L), R.f4("uRipK", F.speed, F.width, F.decay, F.amp), R.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), R.f4("uPtr", B.x, B.y, ve, ye), R.f4("uPtrK", F.ptrRad, F.ptrAmp, F.ptrFast, F.ptrRim), R.f3("uAccent", N[0], N[1], N[2]), R.fv1("uE", ne), k(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), H.i1("uTex", 0), H.f1("uAdd", 0), H.f2("uDstTexel", 1 / g.w, 1 / g.h), H.f2("uSrcTexel", 1 / b, 1 / x), k(g), e.useProgram(s.p), U.i1("uTex", 0), U.f2("uTexel", 1 / g.w, 1 / g.h);
598
+ let Ee = le.soften * (ue * .5) * .95;
599
+ if (Ee > .1) {
600
+ let t = Math.min(4, Math.max(1, Math.ceil(Ee / 3)));
601
+ U.f1("uR", Ee / Math.sqrt(t) / 1.95);
602
+ for (let n = 0; n < t; n += 1) e.bindTexture(e.TEXTURE_2D, g.tex), U.f2("uDir", 1, 0), k(_), e.bindTexture(e.TEXTURE_2D, _.tex), U.f2("uDir", 0, 1), k(g);
602
603
  }
603
- e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), H.i1("uTex", 0), H.i1("uTex2", 1), H.f1("uAdd", 1), H.f2("uDstTexel", 1 / v.w, 1 / v.h), H.f2("uSrcTexel", 1 / g.w, 1 / g.h), D(v), e.useProgram(s.p), e.activeTexture(e.TEXTURE0), U.i1("uTex", 0), U.f2("uTexel", 1 / v.w, 1 / v.h);
604
- let Te = k.glowR * (de / T) / 129;
604
+ e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), H.i1("uTex", 0), H.i1("uTex2", 1), H.f1("uAdd", 1), H.f2("uDstTexel", 1 / v.w, 1 / v.h), H.f2("uSrcTexel", 1 / g.w, 1 / g.h), k(v), e.useProgram(s.p), e.activeTexture(e.TEXTURE0), U.i1("uTex", 0), U.f2("uTexel", 1 / v.w, 1 / v.h);
605
+ let De = le.glowR * (ue / E) / 129;
605
606
  for (let t of [
606
607
  1,
607
608
  2.3,
608
609
  5.2,
609
610
  9
610
- ].map((e) => e * Te)) U.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), U.f2("uDir", 1, 0), D(y), e.bindTexture(e.TEXTURE_2D, y.tex), U.f2("uDir", 0, 1), D(v);
611
- e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), q.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), q.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), q.i1("uGlow", 2), q.f2("uRes", b, x), q.f2("uC", ee, w), q.f2("uHalf", S / 2, C / 2), q.f1("uT", ge), q.fv4("uRip", P), q.f4("uRipK", A.speed, A.width, A.decay, A.amp), q.f4("uRipK2", A.facet, A.lobes, A.sharp, A.emit), q.f3("uAccent", O[0], O[1], O[2]), q.f1("uGlowGain", k.glow), q.f1("uGlowIn", k.glowIn), q.f1("uOccl", k.occl), q.f1("uDim", se.dim), q.f1("uPunch", k.punch), D(null), G = requestAnimationFrame(we);
611
+ ].map((e) => e * De)) U.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), U.f2("uDir", 1, 0), k(y), e.bindTexture(e.TEXTURE_2D, y.tex), U.f2("uDir", 0, 1), k(v);
612
+ e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), K.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), K.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), K.i1("uGlow", 2), K.f2("uRes", b, x), K.f2("uC", w, T), K.f2("uHalf", S / 2, C / 2), K.f1("uT", pe), K.fv4("uRip", L), K.f4("uRipK", F.speed, F.width, F.decay, F.amp), K.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), K.f3("uAccent", N[0], N[1], N[2]), K.f1("uGlowGain", le.glow), K.f1("uGlowIn", le.glowIn), K.f1("uOccl", le.occl), K.f1("uDim", P.dim), K.f1("uPunch", le.punch), k(null), G = requestAnimationFrame(Te);
612
613
  }
613
- let q = (e) => {
614
+ let K = (e) => {
614
615
  if (e.pointerType !== "mouse") return;
615
616
  let [t, n] = U(e);
616
- L.x = t, L.y = n, R.x = t, R.y = n, B = 0, V.over = !0, W();
617
- }, J = (e) => {
617
+ z.x = t, z.y = n, B.x = t, B.y = n, ye = 0, V.over = !0, W();
618
+ }, Ee = (e) => {
618
619
  e.pointerType === "mouse" && (V.over = !1, W());
619
- }, Te = (e) => {
620
+ }, De = (e) => {
620
621
  if (!V.over && !V.press) return;
621
622
  let [t, n] = U(e);
622
- L.x = t, L.y = n;
623
- }, Ee = (e) => {
623
+ z.x = t, z.y = n;
624
+ }, Oe = (e) => {
624
625
  let [t, n] = U(e);
625
- L.x = t, L.y = n, V.press = !0, W(), H(t, n);
626
- }, De = () => {
626
+ z.x = t, z.y = n, V.press = !0, W(), H(t, n);
627
+ }, ke = () => {
627
628
  V.press = !1, W();
628
- }, Oe = () => {
629
+ }, Ae = () => {
629
630
  V.focus = n.matches(":focus-visible"), W();
630
- }, Y = () => {
631
+ }, je = () => {
631
632
  V.focus = !1, W();
632
- }, ke = (e) => {
633
+ }, Me = (e) => {
633
634
  e.key !== "Enter" && e.key !== " " || e.repeat || (V.press = !0, W(), H(0, 0));
634
- }, Ae = (e) => {
635
+ }, Ne = (e) => {
635
636
  e.key !== "Enter" && e.key !== " " || (V.press = !1, W());
636
637
  };
637
- n.addEventListener("pointerenter", q), n.addEventListener("pointerleave", J), window.addEventListener("pointermove", Te, { passive: !0 }), n.addEventListener("pointerdown", Ee), window.addEventListener("pointerup", De), window.addEventListener("pointercancel", De), n.addEventListener("focus", Oe), n.addEventListener("blur", Y), n.addEventListener("keydown", ke), n.addEventListener("keyup", Ae);
638
- let je = new ResizeObserver(() => {
639
- te = !0;
638
+ n.addEventListener("pointerenter", K), n.addEventListener("pointerleave", Ee), window.addEventListener("pointermove", De, { passive: !0 }), n.addEventListener("pointerdown", Oe), window.addEventListener("pointerup", ke), window.addEventListener("pointercancel", ke), n.addEventListener("focus", Ae), n.addEventListener("blur", je), n.addEventListener("keydown", Me), n.addEventListener("keyup", Ne);
639
+ let Pe = new ResizeObserver(() => {
640
+ D = !0;
640
641
  });
641
- return je.observe(r), je.observe(n), ne(), G = requestAnimationFrame(we), {
642
+ return Pe.observe(r), Pe.observe(n), ee(), G = requestAnimationFrame(Te), {
642
643
  pause: () => {
643
- K = !0, G && cancelAnimationFrame(G), G = 0;
644
+ Se = !0, G && cancelAnimationFrame(G), G = 0;
644
645
  },
645
646
  resume: () => {
646
- Se || (K = !1, _e = performance.now(), xe = null, G ||= requestAnimationFrame(we));
647
+ Ce || (Se = !1, me = performance.now(), xe = null, G ||= requestAnimationFrame(Te));
647
648
  },
648
649
  dispose: () => {
649
- Se || (Se = !0, K = !0, G && cancelAnimationFrame(G), G = 0, je.disconnect(), n.removeEventListener("pointerenter", q), n.removeEventListener("pointerleave", J), window.removeEventListener("pointermove", Te), n.removeEventListener("pointerdown", Ee), window.removeEventListener("pointerup", De), window.removeEventListener("pointercancel", De), n.removeEventListener("focus", Oe), n.removeEventListener("blur", Y), n.removeEventListener("keydown", ke), n.removeEventListener("keyup", Ae), E.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
650
+ Ce || (Ce = !0, Se = !0, G && cancelAnimationFrame(G), G = 0, Pe.disconnect(), n.removeEventListener("pointerenter", K), n.removeEventListener("pointerleave", Ee), window.removeEventListener("pointermove", De), n.removeEventListener("pointerdown", Oe), window.removeEventListener("pointerup", ke), window.removeEventListener("pointercancel", ke), n.removeEventListener("focus", Ae), n.removeEventListener("blur", je), n.removeEventListener("keydown", Me), n.removeEventListener("keyup", Ne), O.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
650
651
  }
651
652
  };
652
653
  }
653
654
  //#endregion
654
655
  //#region src/LiquidMetalButton.tsx
655
- function N({ children: e, className: r, onClick: i, sound: a = !1, type: o = "button", renderer: s = "auto", ...l }) {
656
- let f = u(null), p = u(null), m = u(null), [h, g] = d("css");
657
- c(() => {
658
- let e = f.current, t = p.current, n = m.current;
656
+ function L({ children: e, className: r, onClick: i, sound: a = !1, type: o = "button", renderer: s = "auto", ...c }) {
657
+ let u = p(null), d = p(null), f = p(null), [h, g] = m("css");
658
+ l(() => {
659
+ let e = u.current, t = d.current, n = f.current;
659
660
  if (!e || !t || !n) return;
660
661
  let r = window.matchMedia("(prefers-reduced-motion: reduce)"), i = !1, a = !1, o = null, c = !1, l = () => {
661
662
  o?.dispose(), o = null, a &&= (te(), !1), c || g("css");
662
- }, u = () => {
663
- if (!(c || o) && E({
663
+ }, p = () => {
664
+ if (!(c || o) && ne({
664
665
  renderer: s,
665
666
  hasWebGL2: typeof WebGL2RenderingContext < "u",
666
667
  prefersReducedMotion: r.matches,
667
668
  isInViewport: i
668
- }) && T()) {
669
- if (a = !0, o = me(n, t, e), !o) {
669
+ }) && k()) {
670
+ if (a = !0, o = pe(n, t, e), !o) {
670
671
  te(), a = !1;
671
672
  return;
672
673
  }
673
674
  g("webgl");
674
675
  }
675
- }, d = new IntersectionObserver((e) => {
676
- i = !!e[0]?.isIntersecting, o ? i && document.visibilityState !== "hidden" ? o.resume() : o.pause() : u();
676
+ }, m = new IntersectionObserver((e) => {
677
+ i = !!e[0]?.isIntersecting, o ? i && document.visibilityState !== "hidden" ? o.resume() : o.pause() : p();
677
678
  }, { rootMargin: "80px" });
678
- d.observe(e);
679
+ m.observe(e);
679
680
  let h = () => {
680
681
  o && (document.visibilityState === "hidden" || !i ? o.pause() : o.resume());
681
682
  };
@@ -685,17 +686,17 @@ function N({ children: e, className: r, onClick: i, sound: a = !1, type: o = "bu
685
686
  l();
686
687
  return;
687
688
  }
688
- u();
689
+ p();
689
690
  };
690
- return r.addEventListener("change", _), u(), () => {
691
- c = !0, d.disconnect(), document.removeEventListener("visibilitychange", h), r.removeEventListener("change", _), l();
691
+ return r.addEventListener("change", _), p(), () => {
692
+ c = !0, m.disconnect(), document.removeEventListener("visibilitychange", h), r.removeEventListener("change", _), l();
692
693
  };
693
694
  }, [s]);
694
695
  let _ = (e) => {
695
- a && y(a), i?.(e);
696
+ a && C(a), i?.(e);
696
697
  }, v = ["game-ui-liquid-metal", r].filter(Boolean).join(" ");
697
698
  return /* @__PURE__ */ n("span", {
698
- ref: f,
699
+ ref: u,
699
700
  className: "game-ui-liquid-metal-host",
700
701
  "data-renderer": h,
701
702
  children: [
@@ -704,16 +705,16 @@ function N({ children: e, className: r, onClick: i, sound: a = !1, type: o = "bu
704
705
  className: "game-ui-liquid-metal-plate"
705
706
  }),
706
707
  /* @__PURE__ */ t("canvas", {
707
- ref: m,
708
+ ref: f,
708
709
  "aria-hidden": "true",
709
710
  className: "game-ui-liquid-metal-canvas"
710
711
  }),
711
712
  /* @__PURE__ */ t("button", {
712
713
  className: v,
713
714
  onClick: _,
714
- ref: p,
715
+ ref: d,
715
716
  type: o,
716
- ...l,
717
+ ...c,
717
718
  children: /* @__PURE__ */ t("span", {
718
719
  className: "game-ui-liquid-metal-label",
719
720
  children: e
@@ -723,8 +724,720 @@ function N({ children: e, className: r, onClick: i, sound: a = !1, type: o = "bu
723
724
  });
724
725
  }
725
726
  //#endregion
727
+ //#region src/liquidGooeyFilter.tsx
728
+ var R = "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 -29.5";
729
+ function ge({ index: n, shadow: r }) {
730
+ let i = [], a = "bin";
731
+ return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
732
+ in: a,
733
+ operator: r.spread > 0 ? "erode" : "dilate",
734
+ radius: Math.abs(r.spread),
735
+ result: `shadow-${n}-erode`
736
+ }, "erode")), a = `shadow-${n}-erode`), (r.x !== 0 || r.y !== 0) && (i.push(/* @__PURE__ */ t("feOffset", {
737
+ in: a,
738
+ dx: r.x,
739
+ dy: r.y,
740
+ result: `shadow-${n}-offset`
741
+ }, "offset")), a = `shadow-${n}-offset`), r.blur > 0 && (i.push(/* @__PURE__ */ t("feGaussianBlur", {
742
+ in: a,
743
+ stdDeviation: r.blur / 2,
744
+ result: `shadow-${n}-blur`
745
+ }, "blur")), a = `shadow-${n}-blur`), i.push(/* @__PURE__ */ t("feComposite", {
746
+ in: "bin",
747
+ in2: a,
748
+ operator: "out",
749
+ result: `shadow-${n}-band`
750
+ }, "band"), /* @__PURE__ */ t("feFlood", {
751
+ floodColor: r.color,
752
+ result: `shadow-${n}-color`
753
+ }, "color"), /* @__PURE__ */ t("feComposite", {
754
+ in: `shadow-${n}-color`,
755
+ in2: `shadow-${n}-band`,
756
+ operator: "in",
757
+ result: `shadow-${n}`
758
+ }, "fill")), /* @__PURE__ */ t(e, { children: i });
759
+ }
760
+ function _e({ index: n, shadow: r }) {
761
+ let i = [], a = "shape";
762
+ return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
763
+ in: "bin",
764
+ operator: r.spread > 0 ? "dilate" : "erode",
765
+ radius: Math.abs(r.spread),
766
+ result: `shadow-${n}-spread`
767
+ }, "spread")), a = `shadow-${n}-spread`), r.blur > 0 && (i.push(/* @__PURE__ */ t("feGaussianBlur", {
768
+ in: a,
769
+ stdDeviation: r.blur / 2,
770
+ result: `shadow-${n}-blur`
771
+ }, "blur")), a = `shadow-${n}-blur`), (r.x !== 0 || r.y !== 0) && (i.push(/* @__PURE__ */ t("feOffset", {
772
+ in: a,
773
+ dx: r.x,
774
+ dy: r.y,
775
+ result: `shadow-${n}-offset`
776
+ }, "offset")), a = `shadow-${n}-offset`), i.push(/* @__PURE__ */ t("feFlood", {
777
+ floodColor: r.color,
778
+ result: `shadow-${n}-color`
779
+ }, "color"), /* @__PURE__ */ t("feComposite", {
780
+ in: `shadow-${n}-color`,
781
+ in2: a,
782
+ operator: "in",
783
+ result: `shadow-${n}`
784
+ }, "fill")), /* @__PURE__ */ t(e, { children: i });
785
+ }
786
+ function z({ stroke: n }) {
787
+ let r = [];
788
+ return r.push(/* @__PURE__ */ t("feMorphology", {
789
+ in: "bin",
790
+ operator: "erode",
791
+ radius: n.width,
792
+ result: "stroke-erode"
793
+ }, "erode"), /* @__PURE__ */ t("feComposite", {
794
+ in: "bin",
795
+ in2: "stroke-erode",
796
+ operator: "out",
797
+ result: "stroke-band"
798
+ }, "band"), /* @__PURE__ */ t("feFlood", {
799
+ floodColor: n.color,
800
+ result: "stroke-color"
801
+ }, "color"), /* @__PURE__ */ t("feComposite", {
802
+ in: "stroke-color",
803
+ in2: "stroke-band",
804
+ operator: "in",
805
+ result: "stroke-out"
806
+ }, "fill")), /* @__PURE__ */ t(e, { children: r });
807
+ }
808
+ function B({ blur: r, contrast: i, shadows: a, stroke: o }) {
809
+ let s = Math.round((.5 - 5 / 12 * i) * 100) / 100;
810
+ return /* @__PURE__ */ n(e, { children: [
811
+ /* @__PURE__ */ t("feGaussianBlur", {
812
+ in: "SourceGraphic",
813
+ stdDeviation: r,
814
+ result: "blur"
815
+ }),
816
+ /* @__PURE__ */ t("feColorMatrix", {
817
+ in: "blur",
818
+ type: "matrix",
819
+ values: `1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 ${i} ${s}`,
820
+ result: "goo"
821
+ }),
822
+ /* @__PURE__ */ t("feComposite", {
823
+ in: "SourceGraphic",
824
+ in2: "goo",
825
+ operator: "atop",
826
+ result: "shape"
827
+ }),
828
+ o !== null || a.some((e) => e.inset || e.spread !== 0) ? /* @__PURE__ */ t("feColorMatrix", {
829
+ in: "shape",
830
+ type: "matrix",
831
+ values: R,
832
+ result: "bin"
833
+ }) : null,
834
+ a.map((e, n) => e.inset ? /* @__PURE__ */ t(ge, {
835
+ index: n,
836
+ shadow: e
837
+ }, n) : /* @__PURE__ */ t(_e, {
838
+ index: n,
839
+ shadow: e
840
+ }, n)),
841
+ o ? /* @__PURE__ */ t(z, { stroke: o }) : null,
842
+ a.length > 0 || o ? /* @__PURE__ */ n("feMerge", { children: [
843
+ a.map((e, t) => e.inset ? -1 : t).filter((e) => e >= 0).reverse().map((e) => /* @__PURE__ */ t("feMergeNode", { in: `shadow-${e}` }, e)),
844
+ /* @__PURE__ */ t("feMergeNode", { in: "shape" }),
845
+ o ? /* @__PURE__ */ t("feMergeNode", { in: "stroke-out" }) : null,
846
+ a.map((e, n) => e.inset ? /* @__PURE__ */ t("feMergeNode", { in: `shadow-${n}` }, n) : null)
847
+ ] }) : null
848
+ ] });
849
+ }
850
+ //#endregion
851
+ //#region src/liquidGooeyGeometry.ts
852
+ function ve(e, t) {
853
+ let n = 0, r = 0, i = e;
854
+ for (; i && i !== t && t.contains(i);) n += i.offsetLeft, r += i.offsetTop, i = i.offsetParent;
855
+ return {
856
+ x: n,
857
+ y: r
858
+ };
859
+ }
860
+ function ye(e, t, n) {
861
+ let r = getComputedStyle(e), i = (e) => {
862
+ let r = e.split(" ")[0] ?? "";
863
+ return r.endsWith("%") ? (parseFloat(r) || 0) / 100 * Math.min(t, n) : parseFloat(r) || 0;
864
+ };
865
+ return [
866
+ i(r.borderTopLeftRadius),
867
+ i(r.borderTopRightRadius),
868
+ i(r.borderBottomRightRadius),
869
+ i(r.borderBottomLeftRadius)
870
+ ];
871
+ }
872
+ function V(e) {
873
+ return typeof e == "number" ? [
874
+ e,
875
+ e,
876
+ e,
877
+ e
878
+ ] : e;
879
+ }
880
+ function H(e, t, n, r, i) {
881
+ let [a, o, s, c] = i.map((e) => Math.max(0, e)), l = Math.min(1, n / Math.max(1e-6, a + o), n / Math.max(1e-6, c + s), r / Math.max(1e-6, a + c), r / Math.max(1e-6, o + s));
882
+ return a *= l, o *= l, s *= l, c *= l, `M ${e + a} ${t} H ${e + n - o} A ${o} ${o} 0 0 1 ${e + n} ${t + o} V ${t + r - s} A ${s} ${s} 0 0 1 ${e + n - s} ${t + r} H ${e + c} A ${c} ${c} 0 0 1 ${e} ${t + r - c} V ${t + a} A ${a} ${a} 0 0 1 ${e + a} ${t} Z`;
883
+ }
884
+ //#endregion
885
+ //#region src/liquidGooeyBudget.ts
886
+ var U = 2, W = 48e4, be = 2, xe = W, G = 0;
887
+ function Se(e, t) {
888
+ return Number.isFinite(e) ? Math.max(0, Math.floor(e)) : t;
889
+ }
890
+ function Ce() {
891
+ return {
892
+ maxAnimatedGroups: be,
893
+ maxFilterArea: xe,
894
+ activeGroups: G
895
+ };
896
+ }
897
+ function we(e) {
898
+ if (typeof e == "number") {
899
+ be = Se(e, 0);
900
+ return;
901
+ }
902
+ e.maxAnimatedGroups !== void 0 && (be = Se(e.maxAnimatedGroups, 0)), e.maxFilterArea !== void 0 && (xe = Se(e.maxFilterArea, 0));
903
+ }
904
+ function Te(e) {
905
+ return G >= be || (Number.isFinite(e) ? Math.max(0, e) : Infinity) > xe ? !1 : (G += 1, !0);
906
+ }
907
+ function K() {
908
+ G > 0 && --G;
909
+ }
910
+ //#endregion
911
+ //#region src/liquidGooeySpring.ts
912
+ var Ee = {
913
+ snappy: {
914
+ stiffness: 480,
915
+ damping: 34,
916
+ mass: 1
917
+ },
918
+ smooth: {
919
+ stiffness: 190,
920
+ damping: 26,
921
+ mass: 1
922
+ },
923
+ bouncy: {
924
+ stiffness: 320,
925
+ damping: 17,
926
+ mass: 1
927
+ }
928
+ }, De = 1 / 240;
929
+ function Oe(e) {
930
+ let t = 0, n = 0, r = 0, i = -1, a = 0, o = [0];
931
+ for (; r < 10;) {
932
+ let s = (-e.stiffness * (t - 1) - e.damping * n) / e.mass;
933
+ if (n += s * De, t += n * De, r += De, o.push(t), t > a && (a = t), Math.abs(t - 1) < .001 && Math.abs(n) < .02) {
934
+ if (i < 0 && (i = r), r - i >= .064) break;
935
+ } else i = -1;
936
+ }
937
+ let s = i > 0 ? i : r, c = Math.round(Math.min(120, Math.max(24, s * 90))), l = Math.min(o.length - 1, s / De), u = [];
938
+ for (let e = 0; e <= c; e += 1) {
939
+ let t = Math.min(o.length - 1, Math.round(e / c * l));
940
+ u.push(Math.round((o[t] ?? 1) * 1e4) / 1e4);
941
+ }
942
+ return u[u.length - 1] = 1, {
943
+ duration: s,
944
+ values: u,
945
+ overshoots: a > 1.001
946
+ };
947
+ }
948
+ var ke = null;
949
+ function Ae() {
950
+ return ke === null && (ke = typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("transition-timing-function", "linear(0, 1)")), ke;
951
+ }
952
+ var je = /* @__PURE__ */ new Map(), Me = /* @__PURE__ */ new Map();
953
+ function Ne(e) {
954
+ let t = Me.get(e);
955
+ if (t) return t;
956
+ let n = /^linear\(([^)]+)\)$/.exec(e.trim()), r = /^cubic-bezier\(([^)]+)\)$/.exec(e.trim()), i;
957
+ if (n) {
958
+ let e = (n[1] ?? "").split(",").map(Number);
959
+ i = (t) => {
960
+ if (t <= 0) return e[0] ?? 0;
961
+ if (t >= 1) return e[e.length - 1] ?? 1;
962
+ let n = t * (e.length - 1), r = Math.floor(n), i = e[r] ?? 0;
963
+ return i + ((e[r + 1] ?? i) - i) * (n - r);
964
+ };
965
+ } else if (r) {
966
+ let [e = 0, t = 0, n = 1, a = 1] = (r[1] ?? "").split(",").map(Number);
967
+ i = (r) => {
968
+ if (r <= 0) return 0;
969
+ if (r >= 1) return 1;
970
+ let i = 0, o = 1;
971
+ for (let t = 0; t < 24; t += 1) {
972
+ let t = (i + o) / 2;
973
+ 3 * t * (1 - t) * (1 - t) * e + 3 * t * t * (1 - t) * n + t ** 3 < r ? i = t : o = t;
974
+ }
975
+ let s = (i + o) / 2;
976
+ return 3 * s * (1 - s) * (1 - s) * t + 3 * s * s * (1 - s) * a + s ** 3;
977
+ };
978
+ } else i = e === "ease" ? Ne("cubic-bezier(0.25, 0.1, 0.25, 1)") : e === "ease-in" ? Ne("cubic-bezier(0.42, 0, 1, 1)") : e === "ease-out" ? Ne("cubic-bezier(0, 0, 0.58, 1)") : e === "ease-in-out" ? Ne("cubic-bezier(0.42, 0, 0.58, 1)") : (e) => Math.min(1, Math.max(0, e));
979
+ return Me.set(e, i), i;
980
+ }
981
+ function Pe(e, t = !1) {
982
+ if (t) return {
983
+ duration: 0,
984
+ easing: "linear"
985
+ };
986
+ let n = e ?? "smooth";
987
+ if (typeof n == "object" && "duration" in n) return {
988
+ duration: Math.max(0, n.duration),
989
+ easing: n.ease ?? "cubic-bezier(0.22, 1, 0.36, 1)"
990
+ };
991
+ let r = typeof n == "string" ? Ee[n] : {
992
+ stiffness: 300,
993
+ damping: 24,
994
+ mass: 1,
995
+ ...n
996
+ }, i = `${r.stiffness}/${r.damping}/${r.mass}/${Ae()}`, a = je.get(i);
997
+ if (!a) {
998
+ let e = Oe(r);
999
+ a = {
1000
+ duration: Math.round(e.duration * 1e3),
1001
+ easing: Ae() ? `linear(${e.values.join(", ")})` : e.overshoots ? "cubic-bezier(0.34, 1.56, 0.64, 1)" : "cubic-bezier(0.22, 1, 0.36, 1)"
1002
+ }, je.set(i, a);
1003
+ }
1004
+ return a;
1005
+ }
1006
+ //#endregion
1007
+ //#region src/liquidGooeyEngine.ts
1008
+ function Fe(e, t) {
1009
+ return e !== void 0 && Number.isFinite(e) ? e : t;
1010
+ }
1011
+ function Ie(e) {
1012
+ let t = {
1013
+ x: Fe(e.x, 0),
1014
+ y: Fe(e.y, 0),
1015
+ scale: Math.max(.01, Fe(e.scale, 1))
1016
+ };
1017
+ return e.transition !== void 0 && (t.transition = e.transition), e.delay !== void 0 && (t.delay = Math.max(0, Fe(e.delay, 0))), e.radius !== void 0 && (t.radius = e.radius), t;
1018
+ }
1019
+ function Le(e) {
1020
+ return {
1021
+ x: e.x,
1022
+ y: e.y,
1023
+ scale: e.scale
1024
+ };
1025
+ }
1026
+ function Re(e, t) {
1027
+ return e.x === t.x && e.y === t.y && e.scale === t.scale;
1028
+ }
1029
+ function ze(e) {
1030
+ return e === void 0 ? "" : JSON.stringify(e);
1031
+ }
1032
+ function Be(e, t) {
1033
+ return !!(e && Math.abs(e.x - t.x) < .01 && Math.abs(e.y - t.y) < .01 && Math.abs(e.w - t.w) < .01 && Math.abs(e.h - t.h) < .01 && e.r.every((e, n) => Math.abs(e - (t.r[n] ?? 0)) < .01));
1034
+ }
1035
+ function Ve(e) {
1036
+ return String(Math.round(e * 1e3) / 1e3);
1037
+ }
1038
+ var He = class {
1039
+ getGroup;
1040
+ getFilterArea;
1041
+ onModeChange;
1042
+ nowFn;
1043
+ requestFrame;
1044
+ cancelFrame;
1045
+ items = /* @__PURE__ */ new Map();
1046
+ removeListeners = [];
1047
+ mutationObserver = null;
1048
+ awake = !1;
1049
+ raf = 0;
1050
+ needsPaint = !1;
1051
+ lastActivity = 0;
1052
+ claimed = !1;
1053
+ reducedMotion;
1054
+ filterArea = 0;
1055
+ mode = "static";
1056
+ disposed = !1;
1057
+ constructor(e) {
1058
+ this.getGroup = e.getGroup, this.getFilterArea = e.getFilterArea, this.reducedMotion = e.reducedMotion ?? !1, this.onModeChange = e.onModeChange, this.nowFn = e.now ?? (() => performance.now()), this.requestFrame = e.requestFrame ?? ((e) => requestAnimationFrame(e)), this.cancelFrame = e.cancelFrame ?? ((e) => cancelAnimationFrame(e));
1059
+ }
1060
+ register(e) {
1061
+ this.unregister(e.id);
1062
+ let t = Ie(e.config), n = {
1063
+ ...e,
1064
+ config: t,
1065
+ target: Le(t),
1066
+ current: Le(t),
1067
+ motion: null,
1068
+ lastBox: null,
1069
+ lastPaint: null,
1070
+ ownTransform: "",
1071
+ resizeObserver: null
1072
+ };
1073
+ return n.host.style.transformOrigin = "center", this.applyHost(n), typeof ResizeObserver < "u" && (n.resizeObserver = new ResizeObserver(() => {
1074
+ this.touch(), this.wake();
1075
+ }), n.resizeObserver.observe(n.host)), this.items.set(n.id, n), this.ensureSources(), this.touch(), this.wake(), () => this.unregister(n.id);
1076
+ }
1077
+ update(e, t) {
1078
+ let n = this.items.get(e);
1079
+ if (!n) return;
1080
+ let r = Ie(t), i = Le(r), a = !Re(n.target, i), o = ze(n.config.radius) !== ze(r.radius);
1081
+ if (n.config = r, !a) {
1082
+ o && (n.lastPaint = null, this.touch(), this.wake());
1083
+ return;
1084
+ }
1085
+ let s = this.now();
1086
+ if (this.advanceEntry(n, s), n.target = i, this.reducedMotion) this.snapEntry(n), this.setMode("reduced");
1087
+ else {
1088
+ let e = Pe(r.transition);
1089
+ e.duration <= 0 || !this.ensureClaim() ? (this.snapEntry(n), this.setMode("static")) : (n.motion = {
1090
+ from: { ...n.current },
1091
+ to: { ...i },
1092
+ start: s + (r.delay ?? 0),
1093
+ duration: e.duration,
1094
+ ease: Ne(e.easing)
1095
+ }, n.host.style.willChange = "transform", this.setMode("animated"));
1096
+ }
1097
+ this.touch(s), this.needsPaint = !0, this.wake();
1098
+ }
1099
+ setReducedMotion(e) {
1100
+ if (this.reducedMotion !== e) {
1101
+ if (this.reducedMotion = e, e) {
1102
+ let e = this.now();
1103
+ for (let t of this.items.values()) this.advanceEntry(t, e), this.snapEntry(t);
1104
+ this.releaseClaim(), this.setMode("reduced");
1105
+ } else this.claimed || this.setMode("static");
1106
+ this.touch(), this.needsPaint = !0, this.wake();
1107
+ }
1108
+ }
1109
+ setFilterArea(e) {
1110
+ let t = Number.isFinite(e) ? Math.max(0, e) : Infinity;
1111
+ if (!(Math.abs(t - this.filterArea) < .5)) {
1112
+ if (this.filterArea = t, this.claimed && t > Ce().maxFilterArea) {
1113
+ for (let e of this.items.values()) this.snapEntry(e);
1114
+ this.releaseClaim(), this.setMode(this.reducedMotion ? "reduced" : "static");
1115
+ }
1116
+ this.needsPaint = !0, this.wake();
1117
+ }
1118
+ }
1119
+ wake() {
1120
+ this.disposed || this.items.size === 0 || (this.needsPaint = !0, !this.awake && (this.awake = !0, this.raf = this.requestFrame(this.loop)));
1121
+ }
1122
+ dispose() {
1123
+ if (!this.disposed) {
1124
+ this.disposed = !0, this.raf && this.cancelFrame(this.raf), this.mutationObserver?.disconnect(), this.removeListeners.forEach((e) => e());
1125
+ for (let e of this.items.values()) e.resizeObserver?.disconnect(), e.host.style.willChange = "";
1126
+ this.items.clear(), this.releaseClaim(), this.awake = !1;
1127
+ }
1128
+ }
1129
+ getDebugState() {
1130
+ return {
1131
+ awake: this.awake,
1132
+ mode: this.mode,
1133
+ itemCount: this.items.size,
1134
+ claimed: this.claimed
1135
+ };
1136
+ }
1137
+ now() {
1138
+ return this.nowFn();
1139
+ }
1140
+ touch(e = this.now()) {
1141
+ this.lastActivity = e;
1142
+ }
1143
+ setMode(e) {
1144
+ this.mode !== e && (this.mode = e, this.onModeChange?.(e));
1145
+ }
1146
+ ensureClaim() {
1147
+ if (this.claimed) return !0;
1148
+ let e = this.getFilterArea();
1149
+ return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), Te(this.filterArea) ? (this.claimed = !0, !0) : !1;
1150
+ }
1151
+ releaseClaim() {
1152
+ this.claimed &&= (K(), !1);
1153
+ }
1154
+ snapEntry(e) {
1155
+ e.current = { ...e.target }, e.motion = null, e.host.style.willChange = "", this.applyHost(e);
1156
+ }
1157
+ advanceEntry(e, t) {
1158
+ let n = e.motion;
1159
+ if (!n) return !1;
1160
+ let r = Math.min(1, Math.max(0, (t - n.start) / n.duration)), i = n.ease(r);
1161
+ return e.current = {
1162
+ x: n.from.x + (n.to.x - n.from.x) * i,
1163
+ y: n.from.y + (n.to.y - n.from.y) * i,
1164
+ scale: n.from.scale + (n.to.scale - n.from.scale) * i
1165
+ }, this.applyHost(e), r >= 1 ? (e.current = { ...n.to }, e.motion = null, e.host.style.willChange = "", this.applyHost(e), !1) : !0;
1166
+ }
1167
+ applyHost(e) {
1168
+ let t = `translate(${Ve(e.current.x)}px, ${Ve(e.current.y)}px) scale(${Ve(e.current.scale)})`;
1169
+ e.ownTransform !== t && (e.ownTransform = t, e.host.style.transform = t);
1170
+ }
1171
+ readBox(e, t) {
1172
+ let n = ve(e.host, t), r = e.host.offsetWidth, i = e.host.offsetHeight, a = e.host.firstElementChild ?? e.host, o = e.config.radius === void 0 ? ye(a, r, i) : V(e.config.radius);
1173
+ return {
1174
+ x: n.x,
1175
+ y: n.y,
1176
+ w: r,
1177
+ h: i,
1178
+ r: o
1179
+ };
1180
+ }
1181
+ paintEntry(e, t) {
1182
+ let n = t.x + e.current.x + t.w * (1 - e.current.scale) / 2, r = t.y + e.current.y + t.h * (1 - e.current.scale) / 2, i = `translate(${Ve(n)} ${Ve(r)}) scale(${Ve(e.current.scale)})`, a = H(0, 0, t.w, t.h, t.r), o = `${a}|${i}`;
1183
+ return e.lastPaint === o ? !1 : (e.lastPaint = o, e.blob.setAttribute("d", a), e.blob.setAttribute("transform", i), !0);
1184
+ }
1185
+ loop = (e) => {
1186
+ if (this.raf = 0, this.disposed || this.items.size === 0) {
1187
+ this.awake = !1;
1188
+ return;
1189
+ }
1190
+ let t = !1;
1191
+ for (let n of this.items.values()) this.advanceEntry(n, e) && (t = !0);
1192
+ let n = this.getGroup(), r = !1;
1193
+ if (n) {
1194
+ let e = /* @__PURE__ */ new Map();
1195
+ for (let t of this.items.values()) e.set(t.id, this.readBox(t, n));
1196
+ for (let t of this.items.values()) {
1197
+ let n = e.get(t.id);
1198
+ n && (Be(t.lastBox, n) || (t.lastBox = n, t.lastPaint = null, r = !0), this.paintEntry(t, n) && (r = !0));
1199
+ }
1200
+ }
1201
+ this.needsPaint = !1, (t || r) && this.touch(e);
1202
+ let i = e - this.lastActivity < 500;
1203
+ if (t || this.needsPaint || i) {
1204
+ this.raf = this.requestFrame(this.loop);
1205
+ return;
1206
+ }
1207
+ this.awake = !1, this.releaseClaim(), this.setMode(this.reducedMotion ? "reduced" : "static");
1208
+ };
1209
+ ensureSources() {
1210
+ if (this.mutationObserver) return;
1211
+ let e = this.getGroup();
1212
+ if (!e || typeof MutationObserver > "u") return;
1213
+ this.mutationObserver = new MutationObserver((e) => {
1214
+ let t = !1;
1215
+ for (let n of e) {
1216
+ let e = n.target;
1217
+ if (!(e instanceof Element && e.closest("[data-liquid-gooey-silhouette]"))) {
1218
+ if (n.type === "attributes" && n.attributeName === "style") {
1219
+ let t = [...this.items.values()].find((t) => t.host === e);
1220
+ if (t && t.ownTransform === t.host.style.transform) continue;
1221
+ }
1222
+ t = !0;
1223
+ break;
1224
+ }
1225
+ }
1226
+ t && (this.touch(), this.wake());
1227
+ }), this.mutationObserver.observe(e, {
1228
+ attributes: !0,
1229
+ attributeFilter: ["class", "style"],
1230
+ childList: !0,
1231
+ subtree: !0
1232
+ });
1233
+ let t = () => {
1234
+ this.touch(), this.wake();
1235
+ };
1236
+ for (let n of [
1237
+ "transitionrun",
1238
+ "animationstart",
1239
+ "pointerdown"
1240
+ ]) e.addEventListener(n, t, !0), this.removeListeners.push(() => e.removeEventListener(n, t, !0));
1241
+ window.addEventListener("scroll", t, {
1242
+ capture: !0,
1243
+ passive: !0
1244
+ }), this.removeListeners.push(() => window.removeEventListener("scroll", t, !0));
1245
+ }
1246
+ unregister(e) {
1247
+ let t = this.items.get(e);
1248
+ t && (t.resizeObserver?.disconnect(), t.host.style.willChange = "", this.items.delete(e), this.items.size === 0 && (this.raf && this.cancelFrame(this.raf), this.raf = 0, this.awake = !1, this.releaseClaim()));
1249
+ }
1250
+ };
1251
+ //#endregion
1252
+ //#region src/liquidGooeyShadow.ts
1253
+ function Ue(e, t) {
1254
+ let n = [], r = 0, i = "";
1255
+ for (let a of e) a === "(" ? r += 1 : a === ")" && --r, r === 0 && (t === "," ? a === "," : /\s/.test(a)) ? (i.trim() && n.push(i.trim()), i = "") : i += a;
1256
+ return i.trim() && n.push(i.trim()), n;
1257
+ }
1258
+ var We = /^[+-]?(\d+\.?\d*|\.\d+)(px)?$/;
1259
+ function Ge(e) {
1260
+ if (!e || e.trim() === "" || e.trim() === "none") return [];
1261
+ let t = [];
1262
+ for (let n of Ue(e, ",")) {
1263
+ let e = Ue(n, " "), r = e.includes("inset"), i = [], a = [];
1264
+ for (let t of e) t !== "inset" && (i.length < 4 && We.test(t) ? i.push(parseFloat(t)) : a.push(t));
1265
+ let [o = 0, s = 0, c = 0, l = 0] = i;
1266
+ t.push({
1267
+ x: o,
1268
+ y: s,
1269
+ blur: c,
1270
+ spread: l,
1271
+ color: a.join(" ") || "var(--game-ui-shadow-color, transparent)",
1272
+ inset: r
1273
+ });
1274
+ }
1275
+ return t;
1276
+ }
1277
+ function Ke(e) {
1278
+ if (!e || e.trim() === "" || e.trim() === "none") return null;
1279
+ let t = Ue(e, " "), n = 0, r = [];
1280
+ for (let e of t) e !== "solid" && (n === 0 && We.test(e) ? n = parseFloat(e) : r.push(e));
1281
+ return {
1282
+ width: n,
1283
+ color: r.join(" ") || "var(--game-ui-stroke, transparent)"
1284
+ };
1285
+ }
1286
+ //#endregion
1287
+ //#region src/LiquidGroup.tsx
1288
+ var qe = i(null);
1289
+ function Je() {
1290
+ let e = c(qe);
1291
+ if (!e) throw Error("<LiquidGroup.Item> must be rendered inside <LiquidGroup>.");
1292
+ return e;
1293
+ }
1294
+ function Ye(e) {
1295
+ return e.replace(/[^a-zA-Z0-9_-]/g, "");
1296
+ }
1297
+ function Xe(e, t) {
1298
+ return Number.isFinite(e) ? e : t;
1299
+ }
1300
+ function Ze(...e) {
1301
+ return e.filter(Boolean).join(" ") || void 0;
1302
+ }
1303
+ function Qe() {
1304
+ let [e, t] = m(() => typeof window > "u" ? !1 : window.matchMedia("(prefers-reduced-motion: reduce)").matches);
1305
+ return l(() => {
1306
+ let e = window.matchMedia("(prefers-reduced-motion: reduce)"), n = (e) => t(e.matches);
1307
+ return t(e.matches), e.addEventListener("change", n), () => e.removeEventListener("change", n);
1308
+ }, []), e;
1309
+ }
1310
+ function $e(e) {
1311
+ return e.reduce((e, t) => Math.max(e, Math.max(Math.abs(t.x), Math.abs(t.y)) + t.blur * 1.5 + Math.max(0, t.spread)), 0);
1312
+ }
1313
+ var et = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-surface, var(--game-ui-panel-strong))", filterPadding: a = 24, shadow: o, stroke: c, motion: h = "auto", className: g, style: _, children: v, ...y }, b) {
1314
+ let x = p(null), [S, C] = m(null), [w, T] = m({
1315
+ w: 0,
1316
+ h: 0
1317
+ }), E = Qe(), D = h === "reduced" || E, [O, ee] = m(D ? "reduced" : "static"), k = Math.max(0, Xe(e, 6)), te = Math.max(1, Xe(r, 18)), ne = Math.max(0, Xe(a, 24)), A = f(() => Ge(o), [o]), j = f(() => Ke(c), [c]), M = Math.ceil(k * 3 + ne + $e(A) + (j ? j.width : 0)), re = p(M);
1318
+ re.current = M;
1319
+ let ie = `liquid-gooey-${Ye(u())}`, ae = s((e) => {
1320
+ x.current = e, typeof b == "function" ? b(e) : b && (b.current = e);
1321
+ }, [b]), N = s((e) => C(e), []), P = f(() => new He({
1322
+ getGroup: () => x.current,
1323
+ getFilterArea: () => {
1324
+ let e = x.current;
1325
+ return e ? (e.offsetWidth + re.current * 2) * (e.offsetHeight + re.current * 2) : 0;
1326
+ },
1327
+ onModeChange: ee
1328
+ }), []);
1329
+ d(() => {
1330
+ let e = x.current;
1331
+ if (!e) return;
1332
+ let t = () => {
1333
+ let t = {
1334
+ w: e.offsetWidth,
1335
+ h: e.offsetHeight
1336
+ };
1337
+ T((e) => e.w === t.w && e.h === t.h ? e : t), P.setFilterArea((t.w + M * 2) * (t.h + M * 2));
1338
+ };
1339
+ if (t(), typeof ResizeObserver > "u") return;
1340
+ let n = new ResizeObserver(t);
1341
+ return n.observe(e), () => n.disconnect();
1342
+ }, [P, M]), l(() => {
1343
+ P.setReducedMotion(D);
1344
+ }, [P, D]), l(() => () => P.dispose(), [P]);
1345
+ let oe = Math.max(1, w.w), se = Math.max(1, w.h), ce = Ze("game-ui-liquid-group", g);
1346
+ return /* @__PURE__ */ n("div", {
1347
+ ...y,
1348
+ ref: ae,
1349
+ className: ce,
1350
+ "data-liquid-motion": O,
1351
+ style: _,
1352
+ children: [/* @__PURE__ */ n("svg", {
1353
+ "aria-hidden": "true",
1354
+ className: "game-ui-liquid-silhouette",
1355
+ "data-liquid-gooey-silhouette": "",
1356
+ focusable: "false",
1357
+ viewBox: `0 0 ${oe} ${se}`,
1358
+ children: [/* @__PURE__ */ t("defs", { children: /* @__PURE__ */ t("filter", {
1359
+ colorInterpolationFilters: "sRGB",
1360
+ filterUnits: "userSpaceOnUse",
1361
+ height: se + M * 2,
1362
+ id: ie,
1363
+ width: oe + M * 2,
1364
+ x: -M,
1365
+ y: -M,
1366
+ children: /* @__PURE__ */ t(B, {
1367
+ blur: k,
1368
+ contrast: te,
1369
+ shadows: A,
1370
+ stroke: j
1371
+ })
1372
+ }) }), /* @__PURE__ */ t("g", {
1373
+ ref: N,
1374
+ fill: i,
1375
+ filter: `url(#${ie})`
1376
+ })]
1377
+ }), /* @__PURE__ */ t(qe.Provider, {
1378
+ value: {
1379
+ portal: S,
1380
+ engine: P
1381
+ },
1382
+ children: /* @__PURE__ */ t("div", {
1383
+ className: "game-ui-liquid-content",
1384
+ children: v
1385
+ })
1386
+ })]
1387
+ });
1388
+ }), tt = a(function({ x: r = 0, y: i = 0, scale: a = 1, transition: o, delay: c, radius: l, className: m, style: g, children: _, ...v }, y) {
1389
+ let { portal: b, engine: x } = Je(), S = `liquid-item-${Ye(u())}`, C = p(null), w = p(null), T = p(null), E = f(() => {
1390
+ let e = {
1391
+ x: Xe(r, 0),
1392
+ y: Xe(i, 0),
1393
+ scale: Xe(a, 1)
1394
+ };
1395
+ return o !== void 0 && (e.transition = o), c !== void 0 && (e.delay = c), l !== void 0 && (e.radius = l), e;
1396
+ }, [
1397
+ c,
1398
+ l,
1399
+ a,
1400
+ o,
1401
+ r,
1402
+ i
1403
+ ]);
1404
+ T.current === null && (T.current = E);
1405
+ let D = s((e) => {
1406
+ C.current = e, typeof y == "function" ? y(e) : y && (y.current = e);
1407
+ }, [y]);
1408
+ return d(() => {
1409
+ let e = C.current, t = w.current;
1410
+ if (!(!b || !e || !t || !T.current)) return x.register({
1411
+ id: S,
1412
+ host: e,
1413
+ blob: t,
1414
+ config: T.current
1415
+ });
1416
+ }, [
1417
+ x,
1418
+ S,
1419
+ b
1420
+ ]), d(() => {
1421
+ x.update(S, E);
1422
+ }, [
1423
+ E,
1424
+ x,
1425
+ S
1426
+ ]), d(() => {}, []), /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
1427
+ ...v,
1428
+ ref: D,
1429
+ className: Ze("game-ui-liquid-item", m),
1430
+ style: g,
1431
+ children: _
1432
+ }), b ? h(/* @__PURE__ */ t("path", {
1433
+ ref: w,
1434
+ d: "",
1435
+ "data-liquid-gooey-blob": ""
1436
+ }), b) : null] });
1437
+ }), nt = Object.assign(et, { Item: tt });
1438
+ //#endregion
726
1439
  //#region src/GameCallout.tsx
727
- function ge({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
1440
+ function rt({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
728
1441
  return /* @__PURE__ */ n("div", {
729
1442
  className: [
730
1443
  "game-ui-callout",
@@ -745,8 +1458,8 @@ function ge({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
745
1458
  }
746
1459
  //#endregion
747
1460
  //#region src/GameDialog.tsx
748
- function _e({ children: e, className: r, title: i }) {
749
- let a = l();
1461
+ function it({ children: e, className: r, title: i }) {
1462
+ let a = u();
750
1463
  return /* @__PURE__ */ n("section", {
751
1464
  "aria-labelledby": a,
752
1465
  "aria-modal": "true",
@@ -763,7 +1476,7 @@ function _e({ children: e, className: r, title: i }) {
763
1476
  }
764
1477
  //#endregion
765
1478
  //#region src/GameHistoryPanel.tsx
766
- function ve({ entries: e, label: r }) {
1479
+ function at({ entries: e, label: r }) {
767
1480
  return /* @__PURE__ */ t("section", {
768
1481
  "aria-label": r,
769
1482
  className: "game-ui-history",
@@ -779,7 +1492,7 @@ function ve({ entries: e, label: r }) {
779
1492
  }
780
1493
  //#endregion
781
1494
  //#region src/GameHudActions.tsx
782
- function P({ children: e, className: n, label: r, ...i }) {
1495
+ function ot({ children: e, className: n, label: r, ...i }) {
783
1496
  return /* @__PURE__ */ t("nav", {
784
1497
  "aria-label": r,
785
1498
  className: ["game-ui-hud-actions", n].filter(Boolean).join(" "),
@@ -790,7 +1503,7 @@ function P({ children: e, className: n, label: r, ...i }) {
790
1503
  }
791
1504
  //#endregion
792
1505
  //#region src/GameSurfaces.tsx
793
- function F({ children: e, className: r, title: i, tone: a = "default", ...o }) {
1506
+ function q({ children: e, className: r, title: i, tone: a = "default", ...o }) {
794
1507
  let s = ["game-ui-panel", r].filter(Boolean).join(" ");
795
1508
  return /* @__PURE__ */ n("section", {
796
1509
  ...o,
@@ -799,7 +1512,7 @@ function F({ children: e, className: r, title: i, tone: a = "default", ...o }) {
799
1512
  children: [i ? /* @__PURE__ */ t("h3", { children: i }) : null, e]
800
1513
  });
801
1514
  }
802
- function I({ children: e, className: n, label: r, type: i = "button", ...a }) {
1515
+ function st({ children: e, className: n, label: r, type: i = "button", ...a }) {
803
1516
  return /* @__PURE__ */ t("button", {
804
1517
  "aria-label": r,
805
1518
  className: ["game-ui-icon-button", n].filter(Boolean).join(" "),
@@ -808,8 +1521,8 @@ function I({ children: e, className: n, label: r, type: i = "button", ...a }) {
808
1521
  children: e
809
1522
  });
810
1523
  }
811
- function ye({ children: e, label: i }) {
812
- let a = l();
1524
+ function ct({ children: e, label: i }) {
1525
+ let a = u();
813
1526
  return /* @__PURE__ */ n("span", {
814
1527
  className: "game-ui-tooltip",
815
1528
  children: [o(e) ? r(e, { "aria-describedby": [e.props["aria-describedby"], a].filter(Boolean).join(" ") }) : e, /* @__PURE__ */ t("span", {
@@ -819,8 +1532,8 @@ function ye({ children: e, label: i }) {
819
1532
  })]
820
1533
  });
821
1534
  }
822
- function L({ activeId: e, id: n, onSelect: r, tabs: i }) {
823
- let a = l(), o = n ?? a;
1535
+ function lt({ activeId: e, id: n, onSelect: r, tabs: i }) {
1536
+ let a = u(), o = n ?? a;
824
1537
  return /* @__PURE__ */ t("div", {
825
1538
  className: "game-ui-tabs",
826
1539
  onKeyDown: (t) => {
@@ -859,7 +1572,7 @@ function L({ activeId: e, id: n, onSelect: r, tabs: i }) {
859
1572
  }, n.id))
860
1573
  });
861
1574
  }
862
- function R({ activeId: e, label: n, onSelect: r, options: i }) {
1575
+ function ut({ activeId: e, label: n, onSelect: r, options: i }) {
863
1576
  return /* @__PURE__ */ t("div", {
864
1577
  "aria-label": n,
865
1578
  className: "game-ui-segmented",
@@ -873,7 +1586,7 @@ function R({ activeId: e, label: n, onSelect: r, options: i }) {
873
1586
  }, n.id))
874
1587
  });
875
1588
  }
876
- function z({ label: e, max: r, min: i, onChange: a, value: o }) {
1589
+ function dt({ label: e, max: r, min: i, onChange: a, value: o }) {
877
1590
  return /* @__PURE__ */ n("label", {
878
1591
  className: "game-ui-slider",
879
1592
  children: [/* @__PURE__ */ t("span", { children: e }), /* @__PURE__ */ t("input", {
@@ -887,7 +1600,7 @@ function z({ label: e, max: r, min: i, onChange: a, value: o }) {
887
1600
  })]
888
1601
  });
889
1602
  }
890
- function B({ checked: e, disabled: r, label: i, onClick: a }) {
1603
+ function ft({ checked: e, disabled: r, label: i, onClick: a }) {
891
1604
  return /* @__PURE__ */ n("button", {
892
1605
  "aria-checked": e,
893
1606
  className: "game-ui-toggle",
@@ -901,7 +1614,7 @@ function B({ checked: e, disabled: r, label: i, onClick: a }) {
901
1614
  })]
902
1615
  });
903
1616
  }
904
- function V({ items: e, label: n, onSelect: r }) {
1617
+ function pt({ items: e, label: n, onSelect: r }) {
905
1618
  return /* @__PURE__ */ t("div", {
906
1619
  "aria-label": n,
907
1620
  className: "game-ui-radial-menu",
@@ -916,7 +1629,7 @@ function V({ items: e, label: n, onSelect: r }) {
916
1629
  }, e.id))
917
1630
  });
918
1631
  }
919
- function H({ children: e, tone: n = "info" }) {
1632
+ function mt({ children: e, tone: n = "info" }) {
920
1633
  return /* @__PURE__ */ t("div", {
921
1634
  className: "game-ui-toast",
922
1635
  "data-toast-tone": n,
@@ -924,11 +1637,11 @@ function H({ children: e, tone: n = "info" }) {
924
1637
  children: e
925
1638
  });
926
1639
  }
927
- function U({ actionLabel: e, children: r, title: i }) {
1640
+ function ht({ actionLabel: e, children: r, title: i }) {
928
1641
  return /* @__PURE__ */ n("section", {
929
1642
  "aria-label": i,
930
1643
  className: "game-ui-prompt",
931
- children: [/* @__PURE__ */ n("div", { children: [/* @__PURE__ */ t("h3", { children: i }), /* @__PURE__ */ t("p", { children: r })] }), e ? /* @__PURE__ */ t(b, {
1644
+ children: [/* @__PURE__ */ n("div", { children: [/* @__PURE__ */ t("h3", { children: i }), /* @__PURE__ */ t("p", { children: r })] }), e ? /* @__PURE__ */ t(w, {
932
1645
  variant: "primary",
933
1646
  children: e
934
1647
  }) : null]
@@ -936,7 +1649,7 @@ function U({ actionLabel: e, children: r, title: i }) {
936
1649
  }
937
1650
  //#endregion
938
1651
  //#region src/clay/tokens.ts
939
- var W = {
1652
+ var J = {
940
1653
  ink: "#3b2d23",
941
1654
  inkMuted: "#786250",
942
1655
  parchment: "#fff8ec",
@@ -959,7 +1672,7 @@ var W = {
959
1672
  overlayGlassText: "#fff6ee",
960
1673
  liquidMetalFace: "#3a2518",
961
1674
  liquidMetalInk: "#fff8ec"
962
- }, be = {
1675
+ }, gt = {
963
1676
  face: "var(--game-ui-liquid-metal-face)",
964
1677
  ink: "var(--game-ui-liquid-metal-ink)",
965
1678
  accent: "var(--game-ui-liquid-metal-accent)",
@@ -967,7 +1680,7 @@ var W = {
967
1680
  sweepSpeed: "var(--game-ui-liquid-metal-sweep-speed)",
968
1681
  rest: "var(--game-ui-liquid-metal-rest)",
969
1682
  bloom: "var(--game-ui-liquid-metal-bloom)"
970
- }, xe = {
1683
+ }, _t = {
971
1684
  bg: "var(--game-ui-overlay-glass-bg)",
972
1685
  bgHover: "var(--game-ui-overlay-glass-bg-hover)",
973
1686
  bgStrong: "var(--game-ui-overlay-glass-bg-strong)",
@@ -979,7 +1692,7 @@ var W = {
979
1692
  blur: "var(--game-ui-overlay-glass-blur)",
980
1693
  focusRing: "var(--game-ui-overlay-glass-focus-ring)",
981
1694
  primaryFill: "var(--game-ui-overlay-glass-primary-fill)"
982
- }, G = {
1695
+ }, vt = {
983
1696
  background: "var(--game-ui-bg)",
984
1697
  playfieldScrim: "var(--game-ui-playfield-scrim)",
985
1698
  surface: "var(--game-ui-surface)",
@@ -998,7 +1711,7 @@ var W = {
998
1711
  borderSubtle: "var(--game-ui-border-subtle)",
999
1712
  borderStrong: "var(--game-ui-border-strong)",
1000
1713
  disabled: "var(--game-ui-disabled)"
1001
- }, K = {
1714
+ }, yt = {
1002
1715
  familyDisplay: "var(--game-ui-font-display)",
1003
1716
  familyBody: "var(--game-ui-font-body)",
1004
1717
  familyMono: "var(--game-ui-font-mono)",
@@ -1016,7 +1729,7 @@ var W = {
1016
1729
  weightBody: "var(--game-ui-weight-body)",
1017
1730
  weightStrong: "var(--game-ui-weight-strong)",
1018
1731
  weightTitle: "var(--game-ui-weight-title)"
1019
- }, Se = {
1732
+ }, bt = {
1020
1733
  px2: "var(--game-ui-space-2)",
1021
1734
  px4: "var(--game-ui-space-4)",
1022
1735
  px6: "var(--game-ui-space-6)",
@@ -1031,33 +1744,33 @@ var W = {
1031
1744
  safeRight: "var(--game-ui-safe-right)",
1032
1745
  safeBottom: "var(--game-ui-safe-bottom)",
1033
1746
  safeLeft: "var(--game-ui-safe-left)"
1034
- }, Ce = {
1747
+ }, xt = {
1035
1748
  bead: "var(--game-ui-radius-bead)",
1036
1749
  control: "var(--game-ui-radius-control)",
1037
1750
  card: "var(--game-ui-radius-card)",
1038
1751
  panel: "var(--game-ui-radius-panel)",
1039
1752
  modal: "var(--game-ui-radius-modal)"
1040
- }, we = {
1753
+ }, St = {
1041
1754
  button: "var(--game-ui-shadow-button)",
1042
1755
  panel: "var(--game-ui-shadow-panel)",
1043
1756
  modal: "var(--game-ui-shadow-modal)",
1044
1757
  inset: "var(--game-ui-shadow-inset)",
1045
1758
  stroke: "var(--game-ui-stroke)"
1046
- }, q = {
1759
+ }, Ct = {
1047
1760
  fast: "var(--game-ui-motion-fast)",
1048
1761
  base: "var(--game-ui-motion-base)",
1049
1762
  slow: "var(--game-ui-motion-slow)",
1050
1763
  easingPop: "var(--game-ui-ease-pop)",
1051
1764
  easingSoft: "var(--game-ui-ease-soft)",
1052
1765
  reducedMotion: "var(--game-ui-reduced-motion-policy)"
1053
- }, J = {
1766
+ }, wt = {
1054
1767
  playfield: "var(--game-ui-z-playfield)",
1055
1768
  hud: "var(--game-ui-z-hud)",
1056
1769
  sidebar: "var(--game-ui-z-sidebar)",
1057
1770
  overlay: "var(--game-ui-z-overlay)",
1058
1771
  modal: "var(--game-ui-z-modal)",
1059
1772
  toast: "var(--game-ui-z-toast)"
1060
- }, Te = {
1773
+ }, Tt = {
1061
1774
  touchMinimumPx: 44,
1062
1775
  touchPrimaryPx: 52,
1063
1776
  touchIconPx: 48,
@@ -1068,7 +1781,7 @@ var W = {
1068
1781
  desktopProofHeightPx: 900,
1069
1782
  mobileLandscapeProofWidthPx: 844,
1070
1783
  mobileLandscapeProofHeightPx: 390
1071
- }, Ee = {
1784
+ }, Et = {
1072
1785
  iconSm: "var(--game-ui-asset-icon-sm)",
1073
1786
  iconMd: "var(--game-ui-asset-icon-md)",
1074
1787
  iconLg: "var(--game-ui-asset-icon-lg)",
@@ -1080,20 +1793,20 @@ var W = {
1080
1793
  terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)",
1081
1794
  buildRailCardSize: "var(--game-ui-build-rail-card-size)",
1082
1795
  brushNumberWidth: "var(--game-ui-brush-number-width)"
1083
- }, De = {
1084
- colors: W,
1085
- semantic: G,
1086
- typography: K,
1087
- spacing: Se,
1088
- radius: Ce,
1089
- elevation: we,
1090
- motion: q,
1091
- layers: J,
1092
- targets: Te,
1093
- assetSizing: Ee,
1094
- overlayGlass: xe,
1095
- liquidMetal: be
1096
- }, Oe = "/assets/game/ui/clay/phase03-clay-kit", Y = (e) => `${Oe}/${e}`, ke = {
1796
+ }, Dt = {
1797
+ colors: J,
1798
+ semantic: vt,
1799
+ typography: yt,
1800
+ spacing: bt,
1801
+ radius: xt,
1802
+ elevation: St,
1803
+ motion: Ct,
1804
+ layers: wt,
1805
+ targets: Tt,
1806
+ assetSizing: Et,
1807
+ overlayGlass: _t,
1808
+ liquidMetal: gt
1809
+ }, Ot = "/assets/game/ui/clay/phase03-clay-kit", Y = (e) => `${Ot}/${e}`, kt = {
1097
1810
  ai: { line: Y("icons/function/brain-v1.png") },
1098
1811
  alert: {
1099
1812
  game: Y("components/common/alert-v1.png"),
@@ -1183,20 +1896,20 @@ var W = {
1183
1896
  game: Y("icons/common/target-v1.png"),
1184
1897
  line: Y("icons/function/target-v1.png")
1185
1898
  }
1186
- }, Ae = Object.keys(ke), je = Oe;
1187
- function Me(e) {
1188
- let t = je;
1899
+ }, At = Object.keys(kt), jt = Ot;
1900
+ function Mt(e) {
1901
+ let t = jt;
1189
1902
  return !e || t === "/assets/game/ui/clay/phase03-clay-kit" ? e : e.startsWith("/assets/game/ui/clay/phase03-clay-kit") ? `${t}${e.slice(37)}` : e;
1190
1903
  }
1191
- function Ne(e, t) {
1192
- let n = ke[e];
1193
- return Me(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
1904
+ function Nt(e, t) {
1905
+ let n = kt[e];
1906
+ return Mt(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
1194
1907
  }
1195
- function Pe(e) {
1196
- let t = ke[e], n = [];
1908
+ function Pt(e) {
1909
+ let t = kt[e], n = [];
1197
1910
  return t.game && n.push("game"), t.line && n.push("line"), n;
1198
1911
  }
1199
- var Fe = {
1912
+ var Ft = {
1200
1913
  anvil: Y("icons/common/anvil-v1.png"),
1201
1914
  arrow: Y("icons/common/arrow-v1.png"),
1202
1915
  bomb: Y("icons/common/bomb-v1.png"),
@@ -1223,7 +1936,7 @@ var Fe = {
1223
1936
  swordB: Y("icons/common/sword-b-v1.png"),
1224
1937
  talaria: Y("icons/common/talaria-v1.png"),
1225
1938
  treasure: Y("icons/common/treasure-v1.png")
1226
- }, Ie = Object.keys(Fe), Le = {
1939
+ }, It = Object.keys(Ft), Lt = {
1227
1940
  buttons: {
1228
1941
  primary: Y("buttons/button-brown-large-v2.png"),
1229
1942
  blue: Y("buttons/button-blue-large-v2.png"),
@@ -1244,7 +1957,7 @@ var Fe = {
1244
1957
  tabSelected: Y("components/common/tab-s-v1.png"),
1245
1958
  tabNormal: Y("components/common/tab-n-v1.png")
1246
1959
  },
1247
- icons: Object.fromEntries(Ae.map((e) => [e, Ne(e)])),
1960
+ icons: Object.fromEntries(At.map((e) => [e, Nt(e)])),
1248
1961
  catalog: {
1249
1962
  manifest: "/assets/game/ui/clay/asset-manifest.json",
1250
1963
  sourceCatalog: Y("catalog/phase03-clay-ui-catalog.json"),
@@ -1252,7 +1965,7 @@ var Fe = {
1252
1965
  contactSheetComponents: Y("catalog/component-candidates-contact-sheet-v1.png"),
1253
1966
  contactSheetFunction: Y("catalog/function-icons-contact-sheet-v1.png")
1254
1967
  }
1255
- }, Re = {
1968
+ }, Rt = {
1256
1969
  ai: "AI",
1257
1970
  alert: "!",
1258
1971
  card: "▣",
@@ -1288,72 +2001,72 @@ var Fe = {
1288
2001
  timer: "◷",
1289
2002
  trophy: "★",
1290
2003
  vote: "⌾"
1291
- }, ze = {
1292
- ai: W.berry,
1293
- alert: W.red,
1294
- card: W.honey,
1295
- chat: W.sky,
1296
- check: W.green,
1297
- close: W.red,
1298
- coin: W.honey,
1299
- compass: W.teal,
1300
- copy: W.wood,
1301
- crown: W.honey,
1302
- energy: W.orange,
1303
- gem: W.sky,
1304
- gift: W.red,
1305
- globe: W.teal,
1306
- history: W.inkMuted,
1307
- redo: W.wood,
1308
- undo: W.wood,
1309
- home: W.wood,
1310
- hourglass: W.orange,
1311
- laurel: W.green,
1312
- lock: W.ink,
1313
- lucky: W.green,
1314
- mail: W.sky,
1315
- medal: W.honey,
1316
- mission: W.berry,
1317
- mobile: W.sky,
1318
- portal: W.teal,
1319
- scroll: W.berry,
1320
- settings: W.inkMuted,
1321
- shirt: W.sky,
1322
- shop: W.inkMuted,
1323
- smile: W.honey,
1324
- timer: W.orange,
1325
- trophy: W.honey,
1326
- vote: W.red
2004
+ }, zt = {
2005
+ ai: J.berry,
2006
+ alert: J.red,
2007
+ card: J.honey,
2008
+ chat: J.sky,
2009
+ check: J.green,
2010
+ close: J.red,
2011
+ coin: J.honey,
2012
+ compass: J.teal,
2013
+ copy: J.wood,
2014
+ crown: J.honey,
2015
+ energy: J.orange,
2016
+ gem: J.sky,
2017
+ gift: J.red,
2018
+ globe: J.teal,
2019
+ history: J.inkMuted,
2020
+ redo: J.wood,
2021
+ undo: J.wood,
2022
+ home: J.wood,
2023
+ hourglass: J.orange,
2024
+ laurel: J.green,
2025
+ lock: J.ink,
2026
+ lucky: J.green,
2027
+ mail: J.sky,
2028
+ medal: J.honey,
2029
+ mission: J.berry,
2030
+ mobile: J.sky,
2031
+ portal: J.teal,
2032
+ scroll: J.berry,
2033
+ settings: J.inkMuted,
2034
+ shirt: J.sky,
2035
+ shop: J.inkMuted,
2036
+ smile: J.honey,
2037
+ timer: J.orange,
2038
+ trophy: J.honey,
2039
+ vote: J.red
1327
2040
  };
1328
- function Be(e) {
1329
- let t = Re[e], n = ze[e], r = W.parchment, i = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><defs><filter id="s" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-color="#4c341c" flood-opacity=".22"/></filter></defs><rect x="10" y="8" width="76" height="76" rx="25" fill="${r}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${n}" opacity=".88"/><path d="M23 28c10-12 36-16 52 0" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".38"/><text x="48" y="58" text-anchor="middle" font-family="system-ui,sans-serif" font-size="28" font-weight="900" fill="${r}">${t}</text></svg>`;
2041
+ function Bt(e) {
2042
+ let t = Rt[e], n = zt[e], r = J.parchment, i = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><defs><filter id="s" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-color="#4c341c" flood-opacity=".22"/></filter></defs><rect x="10" y="8" width="76" height="76" rx="25" fill="${r}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${n}" opacity=".88"/><path d="M23 28c10-12 36-16 52 0" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".38"/><text x="48" y="58" text-anchor="middle" font-family="system-ui,sans-serif" font-size="28" font-weight="900" fill="${r}">${t}</text></svg>`;
1330
2043
  return `data:image/svg+xml,${encodeURIComponent(i)}`;
1331
2044
  }
1332
- var Ve = "inline";
1333
- function He(e) {
1334
- Ve = e;
2045
+ var Vt = "inline";
2046
+ function Ht(e) {
2047
+ Vt = e;
1335
2048
  }
1336
- function Ue() {
1337
- return Ve;
2049
+ function Ut() {
2050
+ return Vt;
1338
2051
  }
1339
- function We(e) {
1340
- je = e.replace(/\/+$/, "");
2052
+ function Wt(e) {
2053
+ jt = e.replace(/\/+$/, "");
1341
2054
  }
1342
- function Ge() {
1343
- return je;
2055
+ function Gt() {
2056
+ return jt;
1344
2057
  }
1345
- var Ke = !1;
1346
- function qe() {
1347
- Ke || (Ke = !0, !(typeof console > "u") && console.warn("[SwimmerUIKit] Clay icons are rendering placeholders, not the icon set. The sculpted PNGs ship inside this package but must be served by your app:\n npx swimmer-ui-assets public\n setClayAssetMode('source') // once, at your entry\nCall setClayAssetMode('inline') explicitly to keep placeholders and silence this."));
2058
+ var Kt = !1;
2059
+ function qt() {
2060
+ Kt || (Kt = !0, !(typeof console > "u") && console.warn("[SwimmerUIKit] Clay icons are rendering placeholders, not the icon set. The sculpted PNGs ship inside this package but must be served by your app:\n npx swimmer-ui-assets public\n setClayAssetMode('source') // once, at your entry\nCall setClayAssetMode('inline') explicitly to keep placeholders and silence this."));
1348
2061
  }
1349
- function Je() {
1350
- Ke = !0;
2062
+ function Jt() {
2063
+ Kt = !0;
1351
2064
  }
1352
- function Ye(e, t = {}) {
1353
- return t.inline ?? Ve === "inline" ? (qe(), Be(e)) : Ne(e, t.style);
2065
+ function Yt(e, t = {}) {
2066
+ return t.inline ?? Vt === "inline" ? (qt(), Bt(e)) : Nt(e, t.style);
1354
2067
  }
1355
- function Xe(e, t) {
1356
- return Ne(e, t);
2068
+ function Xt(e, t) {
2069
+ return Nt(e, t);
1357
2070
  }
1358
2071
  //#endregion
1359
2072
  //#region src/ClayComponents.tsx
@@ -1365,7 +2078,7 @@ function X({ children: e, className: n, tone: r = "neutral" }) {
1365
2078
  });
1366
2079
  }
1367
2080
  function Z({ className: e, icon: n, label: r, size: i = "md", style: a, useSourceAsset: o = !1 }) {
1368
- let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Ye(n, {
2081
+ let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Yt(n, {
1369
2082
  ...a ? { style: a } : {},
1370
2083
  ...o ? { inline: !1 } : {}
1371
2084
  });
@@ -1380,7 +2093,7 @@ function Z({ className: e, icon: n, label: r, size: i = "md", style: a, useSourc
1380
2093
  })
1381
2094
  });
1382
2095
  }
1383
- function Ze({ actions: e, className: r, items: i, label: a }) {
2096
+ function Zt({ actions: e, className: r, items: i, label: a }) {
1384
2097
  return /* @__PURE__ */ n("section", {
1385
2098
  "aria-label": a,
1386
2099
  className: ["game-ui-hud", r].filter(Boolean).join(" "),
@@ -1403,7 +2116,7 @@ function Ze({ actions: e, className: r, items: i, label: a }) {
1403
2116
  }) : null]
1404
2117
  });
1405
2118
  }
1406
- function Qe({ cards: e, className: r, label: i }) {
2119
+ function Qt({ cards: e, className: r, label: i }) {
1407
2120
  let a = ["game-ui-card-fan", r].filter(Boolean).join(" "), o = (e.length - 1) / 2;
1408
2121
  return /* @__PURE__ */ t("div", {
1409
2122
  "aria-label": i,
@@ -1426,7 +2139,7 @@ function Qe({ cards: e, className: r, label: i }) {
1426
2139
  }, e.id))
1427
2140
  });
1428
2141
  }
1429
- function $e({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summary: s, title: c, tone: l = "daily", type: u = "button", ...d }) {
2142
+ function $t({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summary: s, title: c, tone: l = "daily", type: u = "button", ...d }) {
1430
2143
  return /* @__PURE__ */ n("button", {
1431
2144
  "aria-pressed": o,
1432
2145
  className: ["game-ui-stage-tile", r].filter(Boolean).join(" "),
@@ -1453,27 +2166,27 @@ function $e({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summ
1453
2166
  ]
1454
2167
  });
1455
2168
  }
1456
- function et() {
2169
+ function en() {
1457
2170
  return typeof window > "u" ? !1 : (window.matchMedia?.("(pointer: coarse), (max-width: 899px)").matches ?? window.innerWidth < 900) && window.innerHeight > window.innerWidth;
1458
2171
  }
1459
- function tt({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
1460
- let [l, u] = d(o || et), [f, p] = d("");
1461
- if (c(() => {
2172
+ function tn({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
2173
+ let [c, u] = m(o || en), [d, f] = m("");
2174
+ if (l(() => {
1462
2175
  if (o) return;
1463
2176
  let e = () => {
1464
- let e = et();
1465
- u(e), e || p("");
2177
+ let e = en();
2178
+ u(e), e || f("");
1466
2179
  };
1467
2180
  return e(), window.addEventListener("resize", e), window.addEventListener("orientationchange", e), () => {
1468
2181
  window.removeEventListener("resize", e), window.removeEventListener("orientationchange", e);
1469
2182
  };
1470
- }, [o]), !l) return null;
1471
- let m = async () => {
1472
- if (p(""), !o) try {
2183
+ }, [o]), !c) return null;
2184
+ let p = async () => {
2185
+ if (f(""), !o) try {
1473
2186
  let e = document.documentElement;
1474
- !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(et());
2187
+ !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(en());
1475
2188
  } catch {
1476
- p(a);
2189
+ f(a);
1477
2190
  }
1478
2191
  };
1479
2192
  return /* @__PURE__ */ t("aside", {
@@ -1493,32 +2206,32 @@ function tt({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
1493
2206
  /* @__PURE__ */ t("h2", { children: s }),
1494
2207
  /* @__PURE__ */ t("p", { children: e }),
1495
2208
  /* @__PURE__ */ t("button", {
1496
- onClick: () => void m(),
2209
+ onClick: () => void p(),
1497
2210
  type: "button",
1498
2211
  children: r
1499
2212
  }),
1500
- f ? /* @__PURE__ */ t("small", { children: f }) : null
2213
+ d ? /* @__PURE__ */ t("small", { children: d }) : null
1501
2214
  ]
1502
2215
  })
1503
2216
  });
1504
2217
  }
1505
- function nt({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
1506
- let [u, f] = d(!1), [p, m] = d(s ?? a[0]?.id ?? ""), h = l(), g = ["game-ui-language-menu", e].filter(Boolean).join(" "), _ = o ?? p, v = a.find((e) => e.id === _), y = r ?? v?.label ?? a[0]?.label ?? "", b = (e) => {
1507
- o === void 0 && m(e), c?.(e), f(!1);
2218
+ function nn({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
2219
+ let [l, d] = m(!1), [f, p] = m(s ?? a[0]?.id ?? ""), h = u(), g = ["game-ui-language-menu", e].filter(Boolean).join(" "), _ = o ?? f, v = a.find((e) => e.id === _), y = r ?? v?.label ?? a[0]?.label ?? "", b = (e) => {
2220
+ o === void 0 && p(e), c?.(e), d(!1);
1508
2221
  };
1509
2222
  return /* @__PURE__ */ n("div", {
1510
2223
  className: g,
1511
2224
  children: [/* @__PURE__ */ n("button", {
1512
2225
  "aria-controls": h,
1513
- "aria-expanded": u,
2226
+ "aria-expanded": l,
1514
2227
  className: "game-ui-language-trigger",
1515
- onClick: () => f((e) => !e),
2228
+ onClick: () => d((e) => !e),
1516
2229
  type: "button",
1517
2230
  children: [/* @__PURE__ */ t(Z, {
1518
2231
  icon: "globe",
1519
2232
  size: "sm"
1520
2233
  }), /* @__PURE__ */ t("span", { children: y })]
1521
- }), u ? /* @__PURE__ */ t("div", {
2234
+ }), l ? /* @__PURE__ */ t("div", {
1522
2235
  "aria-label": i,
1523
2236
  className: "game-ui-language-popover",
1524
2237
  id: h,
@@ -1534,34 +2247,34 @@ function nt({ className: e, currentLabel: r, label: i, options: a, value: o, def
1534
2247
  }) : null]
1535
2248
  });
1536
2249
  }
1537
- function rt({ label: e, tone: r = "loading" }) {
2250
+ function rn({ label: e, tone: r = "loading" }) {
1538
2251
  return /* @__PURE__ */ n("div", {
1539
2252
  className: "game-ui-loading-state",
1540
2253
  "data-loading-tone": r,
1541
2254
  role: r === "error" ? "alert" : "status",
1542
2255
  children: [/* @__PURE__ */ t("img", {
1543
2256
  alt: "",
1544
- src: Ye(r === "error" ? "alert" : "timer")
2257
+ src: Yt(r === "error" ? "alert" : "timer")
1545
2258
  }), /* @__PURE__ */ t("span", { children: e })]
1546
2259
  });
1547
2260
  }
1548
- function it() {
1549
- return Le.catalog;
2261
+ function an() {
2262
+ return Lt.catalog;
1550
2263
  }
1551
2264
  //#endregion
1552
2265
  //#region src/FirstSessionGameShell.tsx
1553
- function at({ fallback: e, slot: n }) {
2266
+ function on({ fallback: e, slot: n }) {
1554
2267
  return n ?? /* @__PURE__ */ t(Z, {
1555
2268
  icon: e,
1556
2269
  size: "sm"
1557
2270
  });
1558
2271
  }
1559
- function ot({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
2272
+ function sn({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
1560
2273
  let f = ["swimmer-first-session-shell", i].filter(Boolean).join(" "), p = e ? `${r} 🔋` : s.guest ?? "guest";
1561
2274
  return /* @__PURE__ */ n("section", {
1562
2275
  "aria-label": s.shell,
1563
2276
  className: f,
1564
- children: [/* @__PURE__ */ t(Ze, {
2277
+ children: [/* @__PURE__ */ t(Zt, {
1565
2278
  className: "swimmer-first-session-hud",
1566
2279
  items: [
1567
2280
  {
@@ -1593,33 +2306,33 @@ function ot({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
1593
2306
  }
1594
2307
  ],
1595
2308
  label: s.hud,
1596
- actions: /* @__PURE__ */ n(P, {
2309
+ actions: /* @__PURE__ */ n(ot, {
1597
2310
  className: "swimmer-first-session-hud-actions",
1598
2311
  label: s.tools,
1599
2312
  children: [
1600
- /* @__PURE__ */ n(b, {
2313
+ /* @__PURE__ */ n(w, {
1601
2314
  "aria-label": s.wardrobe,
1602
2315
  onClick: u,
1603
2316
  variant: "secondary",
1604
- children: [/* @__PURE__ */ t(at, {
2317
+ children: [/* @__PURE__ */ t(on, {
1605
2318
  fallback: "shirt",
1606
2319
  slot: o?.wardrobe
1607
2320
  }), s.wardrobe]
1608
2321
  }),
1609
- /* @__PURE__ */ n(b, {
2322
+ /* @__PURE__ */ n(w, {
1610
2323
  "aria-label": s.settings,
1611
2324
  onClick: l,
1612
2325
  variant: "secondary",
1613
- children: [/* @__PURE__ */ t(at, {
2326
+ children: [/* @__PURE__ */ t(on, {
1614
2327
  fallback: "settings",
1615
2328
  slot: o?.settings
1616
2329
  }), s.settings]
1617
2330
  }),
1618
- /* @__PURE__ */ n(b, {
2331
+ /* @__PURE__ */ n(w, {
1619
2332
  "aria-label": s.history,
1620
2333
  onClick: c,
1621
2334
  variant: "secondary",
1622
- children: [/* @__PURE__ */ t(at, {
2335
+ children: [/* @__PURE__ */ t(on, {
1623
2336
  fallback: "history",
1624
2337
  slot: o?.history
1625
2338
  }), s.history]
@@ -1644,7 +2357,7 @@ function ot({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
1644
2357
  }),
1645
2358
  /* @__PURE__ */ n("label", {
1646
2359
  className: "swimmer-first-session-input",
1647
- children: [/* @__PURE__ */ t(at, {
2360
+ children: [/* @__PURE__ */ t(on, {
1648
2361
  fallback: "chat",
1649
2362
  slot: o?.input
1650
2363
  }), /* @__PURE__ */ t("span", { children: s.input })]
@@ -1652,7 +2365,7 @@ function ot({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
1652
2365
  /* @__PURE__ */ n("button", {
1653
2366
  className: "swimmer-first-session-emote",
1654
2367
  type: "button",
1655
- children: [/* @__PURE__ */ t(at, {
2368
+ children: [/* @__PURE__ */ t(on, {
1656
2369
  fallback: "smile",
1657
2370
  slot: o?.emote
1658
2371
  }), s.emote]
@@ -1661,7 +2374,7 @@ function ot({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
1661
2374
  })]
1662
2375
  });
1663
2376
  }
1664
- function st({ labels: e, onDismiss: r, open: i }) {
2377
+ function cn({ labels: e, onDismiss: r, open: i }) {
1665
2378
  return i ? /* @__PURE__ */ n("aside", {
1666
2379
  "aria-labelledby": "swimmer-first-session-onboarding-title",
1667
2380
  "aria-modal": "true",
@@ -1693,11 +2406,11 @@ function st({ labels: e, onDismiss: r, open: i }) {
1693
2406
  }),
1694
2407
  /* @__PURE__ */ n("div", {
1695
2408
  className: "swimmer-first-session-onboarding-actions",
1696
- children: [/* @__PURE__ */ t(b, {
2409
+ children: [/* @__PURE__ */ t(w, {
1697
2410
  onClick: r,
1698
2411
  variant: "primary",
1699
2412
  children: e.start
1700
- }), /* @__PURE__ */ t(b, {
2413
+ }), /* @__PURE__ */ t(w, {
1701
2414
  onClick: r,
1702
2415
  variant: "ghost",
1703
2416
  children: e.skip
@@ -1709,7 +2422,7 @@ function st({ labels: e, onDismiss: r, open: i }) {
1709
2422
  }
1710
2423
  //#endregion
1711
2424
  //#region src/GameForms.tsx
1712
- var ct = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
2425
+ var ln = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
1713
2426
  return /* @__PURE__ */ t("input", {
1714
2427
  className: ["game-ui-input", e].filter(Boolean).join(" "),
1715
2428
  "data-invalid": n ? "true" : void 0,
@@ -1717,7 +2430,7 @@ var ct = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
1717
2430
  type: r,
1718
2431
  ...i
1719
2432
  });
1720
- }), lt = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
2433
+ }), un = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
1721
2434
  return /* @__PURE__ */ t("textarea", {
1722
2435
  className: [
1723
2436
  "game-ui-input",
@@ -1730,7 +2443,7 @@ var ct = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
1730
2443
  ...i
1731
2444
  });
1732
2445
  });
1733
- function ut({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
2446
+ function dn({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
1734
2447
  return /* @__PURE__ */ n("label", {
1735
2448
  className: ["game-ui-field", r].filter(Boolean).join(" "),
1736
2449
  "data-invalid": i ? "true" : void 0,
@@ -1756,7 +2469,7 @@ function ut({ children: e, className: r, error: i, hint: a, label: o, required:
1756
2469
  ]
1757
2470
  });
1758
2471
  }
1759
- function dt({ className: e, label: r, ...i }) {
2472
+ function fn({ className: e, label: r, ...i }) {
1760
2473
  return /* @__PURE__ */ n("label", {
1761
2474
  className: ["game-ui-checkbox", e].filter(Boolean).join(" "),
1762
2475
  children: [
@@ -1778,11 +2491,11 @@ function dt({ className: e, label: r, ...i }) {
1778
2491
  }
1779
2492
  //#endregion
1780
2493
  //#region src/GameDisplay.tsx
1781
- function ft(e) {
2494
+ function pn(e) {
1782
2495
  let t = e.trim().split(/\s+/).filter(Boolean);
1783
2496
  return t.length === 0 ? "?" : t.slice(0, 2).map((e) => e[0] ?? "").join("").toUpperCase();
1784
2497
  }
1785
- function pt({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
2498
+ function mn({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
1786
2499
  return /* @__PURE__ */ n("span", {
1787
2500
  className: ["game-ui-avatar", r].filter(Boolean).join(" "),
1788
2501
  "data-avatar-size": a,
@@ -1793,7 +2506,7 @@ function pt({ className: r, name: i, size: a = "md", src: o, status: s = "none"
1793
2506
  }) : /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("span", {
1794
2507
  "aria-hidden": "true",
1795
2508
  className: "game-ui-avatar-initials",
1796
- children: ft(i)
2509
+ children: pn(i)
1797
2510
  }), /* @__PURE__ */ t("span", {
1798
2511
  className: "game-ui-sr-only",
1799
2512
  children: i
@@ -1803,7 +2516,7 @@ function pt({ className: r, name: i, size: a = "md", src: o, status: s = "none"
1803
2516
  })]
1804
2517
  });
1805
2518
  }
1806
- function mt({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
2519
+ function hn({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
1807
2520
  let l = i <= 0 ? 100 : i, u = Math.max(0, Math.min(100, s / l * 100)), d = ["game-ui-progress", e].filter(Boolean).join(" "), f = !!c;
1808
2521
  return /* @__PURE__ */ n("div", {
1809
2522
  className: d,
@@ -1829,7 +2542,7 @@ function mt({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
1829
2542
  }) : null]
1830
2543
  });
1831
2544
  }
1832
- function ht({ action: e, className: r, description: i, icon: a, title: o }) {
2545
+ function gn({ action: e, className: r, description: i, icon: a, title: o }) {
1833
2546
  return /* @__PURE__ */ n("div", {
1834
2547
  className: ["game-ui-empty-state", r].filter(Boolean).join(" "),
1835
2548
  children: [
@@ -1854,7 +2567,7 @@ function ht({ action: e, className: r, description: i, icon: a, title: o }) {
1854
2567
  }
1855
2568
  //#endregion
1856
2569
  //#region src/GameSurfacePack.tsx
1857
- function gt({ assetLibrary: e, bottomBar: r, children: i, className: a, density: o = "comfortable", hud: s, layout: c = "auto", movementPad: l, overlay: u, sidePanel: d, title: f }) {
2570
+ function _n({ assetLibrary: e, bottomBar: r, children: i, className: a, density: o = "comfortable", hud: s, layout: c = "auto", movementPad: l, overlay: u, sidePanel: d, title: f }) {
1858
2571
  return /* @__PURE__ */ n("section", {
1859
2572
  "aria-label": f,
1860
2573
  className: ["game-ui-shell", a].filter(Boolean).join(" "),
@@ -1892,8 +2605,8 @@ function gt({ assetLibrary: e, bottomBar: r, children: i, className: a, density:
1892
2605
  ]
1893
2606
  });
1894
2607
  }
1895
- var _t = gt;
1896
- function vt({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
2608
+ var vn = _n;
2609
+ function yn({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
1897
2610
  return /* @__PURE__ */ t("section", {
1898
2611
  "aria-label": a,
1899
2612
  className: ["game-ui-fact-list", e].filter(Boolean).join(" "),
@@ -1922,9 +2635,9 @@ function vt({ className: e, density: r = "comfortable", facts: i, label: a, vari
1922
2635
  }, e.id))
1923
2636
  });
1924
2637
  }
1925
- var yt = vt;
1926
- function bt({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
1927
- return /* @__PURE__ */ n(P, {
2638
+ var bn = yn;
2639
+ function xn({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
2640
+ return /* @__PURE__ */ n(ot, {
1928
2641
  className: ["game-ui-action-grid", i].filter(Boolean).join(" "),
1929
2642
  "data-icon-label-mode": c === "icon" ? o : void 0,
1930
2643
  label: s,
@@ -1949,14 +2662,14 @@ function bt({ actions: r, className: i, density: a = "comfortable", iconLabelMod
1949
2662
  }) : null,
1950
2663
  r.shortcut ? /* @__PURE__ */ t("kbd", { children: r.shortcut }) : null
1951
2664
  ] }), l = () => r.onAction?.(r.id);
1952
- return c === "icon" ? /* @__PURE__ */ t(I, {
2665
+ return c === "icon" ? /* @__PURE__ */ t(st, {
1953
2666
  "aria-pressed": r.selected,
1954
2667
  className: "game-ui-action-grid-button",
1955
2668
  disabled: r.disabled,
1956
2669
  label: r.ariaLabel ?? r.label,
1957
2670
  onClick: l,
1958
2671
  children: s
1959
- }, r.id) : /* @__PURE__ */ t(b, {
2672
+ }, r.id) : /* @__PURE__ */ t(w, {
1960
2673
  "aria-pressed": r.selected,
1961
2674
  className: "game-ui-action-grid-button",
1962
2675
  disabled: r.disabled,
@@ -1967,7 +2680,7 @@ function bt({ actions: r, className: i, density: a = "comfortable", iconLabelMod
1967
2680
  })]
1968
2681
  });
1969
2682
  }
1970
- var xt = [
2683
+ var Sn = [
1971
2684
  {
1972
2685
  direction: "forward",
1973
2686
  label: "Move forward",
@@ -1992,7 +2705,7 @@ var xt = [
1992
2705
  shortcut: "S / ↓",
1993
2706
  symbol: "↓"
1994
2707
  }
1995
- ], St = {
2708
+ ], Cn = {
1996
2709
  ArrowUp: "forward",
1997
2710
  w: "forward",
1998
2711
  W: "forward",
@@ -2007,7 +2720,7 @@ var xt = [
2007
2720
  S: "backward",
2008
2721
  " ": "reset"
2009
2722
  };
2010
- function Ct({ actions: e = xt, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
2723
+ function wn({ actions: e = Sn, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
2011
2724
  let u = ["game-ui-movement-pad", r].filter(Boolean).join(" "), d = (e) => {
2012
2725
  a || l?.(e);
2013
2726
  };
@@ -2017,7 +2730,7 @@ function Ct({ actions: e = xt, className: r, density: i = "comfortable", disable
2017
2730
  "data-density": i,
2018
2731
  "data-layout": c,
2019
2732
  onKeyDown: (t) => {
2020
- let n = St[t.key];
2733
+ let n = Cn[t.key];
2021
2734
  if (!n) return;
2022
2735
  let r = e.find((e) => e.direction === n);
2023
2736
  !r || r.disabled || a || (t.preventDefault(), d(n));
@@ -2025,7 +2738,7 @@ function Ct({ actions: e = xt, className: r, density: i = "comfortable", disable
2025
2738
  tabIndex: 0,
2026
2739
  children: [/* @__PURE__ */ t("div", {
2027
2740
  className: "game-ui-movement-pad-grid",
2028
- children: e.map((e) => /* @__PURE__ */ n(I, {
2741
+ children: e.map((e) => /* @__PURE__ */ n(st, {
2029
2742
  className: "game-ui-movement-button",
2030
2743
  "data-direction": e.direction,
2031
2744
  disabled: a || e.disabled,
@@ -2043,15 +2756,15 @@ function Ct({ actions: e = xt, className: r, density: i = "comfortable", disable
2043
2756
  }), o ? /* @__PURE__ */ t("p", { children: o }) : null]
2044
2757
  });
2045
2758
  }
2046
- var wt = {
2759
+ var Tn = {
2047
2760
  generated: "Generated",
2048
2761
  imported: "Imported",
2049
2762
  starter: "Starter"
2050
- }, Tt = {
2763
+ }, En = {
2051
2764
  generated: "ai",
2052
2765
  imported: "warning",
2053
2766
  starter: "neutral"
2054
- }, Et = {
2767
+ }, Dn = {
2055
2768
  error: "danger",
2056
2769
  generating: "ai",
2057
2770
  missing: "danger",
@@ -2059,12 +2772,12 @@ var wt = {
2059
2772
  ready: "neutral",
2060
2773
  selected: "success"
2061
2774
  };
2062
- function Dt({ assetId: e, badges: r = [], cardLayout: i = "list", className: a, description: o, disabled: s, facts: c = [], icon: l = "gem", onClick: u, onSelect: d, selected: f = !1, source: p, sourceLabel: m, status: h = "ready", statusLabel: g, thumbnailAlt: _ = "", thumbnailSrc: v, title: y, type: b = "button", ...x }) {
2063
- let { "aria-label": S, ...C } = x, ee = ["game-ui-asset-card", a].filter(Boolean).join(" "), w = m ?? wt[p], T = g ?? h;
2775
+ function On({ assetId: e, badges: r = [], cardLayout: i = "list", className: a, description: o, disabled: s, facts: c = [], icon: l = "gem", onClick: u, onSelect: d, selected: f = !1, source: p, sourceLabel: m, status: h = "ready", statusLabel: g, thumbnailAlt: _ = "", thumbnailSrc: v, title: y, type: b = "button", ...x }) {
2776
+ let { "aria-label": S, ...C } = x, w = ["game-ui-asset-card", a].filter(Boolean).join(" "), T = m ?? Tn[p], E = g ?? h;
2064
2777
  return /* @__PURE__ */ n("button", {
2065
2778
  "aria-label": S ?? y,
2066
2779
  "aria-pressed": f,
2067
- className: ee,
2780
+ className: w,
2068
2781
  "data-asset-card-layout": i,
2069
2782
  "data-asset-source": p,
2070
2783
  "data-asset-status": h,
@@ -2091,12 +2804,12 @@ function Dt({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
2091
2804
  className: "game-ui-asset-card-badges",
2092
2805
  children: [
2093
2806
  /* @__PURE__ */ t(X, {
2094
- tone: Tt[p],
2095
- children: w
2807
+ tone: En[p],
2808
+ children: T
2096
2809
  }),
2097
2810
  /* @__PURE__ */ t(X, {
2098
- tone: Et[h],
2099
- children: T
2811
+ tone: Dn[h],
2812
+ children: E
2100
2813
  }),
2101
2814
  r.map((e) => /* @__PURE__ */ t(X, {
2102
2815
  tone: e.tone ?? "neutral",
@@ -2114,7 +2827,7 @@ function Dt({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
2114
2827
  })]
2115
2828
  });
2116
2829
  }
2117
- function Ot({ cardLayout: e = "auto", className: r, density: i = "comfortable", emptyAction: a, emptyDescription: o = "Assets will appear here when they are ready to place.", emptyTitle: s = "No assets ready", groups: c, label: l, onSelectAsset: u, selectedAssetId: d, subtitle: f, title: p }) {
2830
+ function kn({ cardLayout: e = "auto", className: r, density: i = "comfortable", emptyAction: a, emptyDescription: o = "Assets will appear here when they are ready to place.", emptyTitle: s = "No assets ready", groups: c, label: l, onSelectAsset: u, selectedAssetId: d, subtitle: f, title: p }) {
2118
2831
  let m = ["game-ui-asset-library", r].filter(Boolean).join(" "), h = c.reduce((e, t) => e + t.assets.length, 0), g = c.reduce((e, t) => (t.assets.forEach((t) => {
2119
2832
  e[t.source] += 1;
2120
2833
  }), e), {
@@ -2122,7 +2835,7 @@ function Ot({ cardLayout: e = "auto", className: r, density: i = "comfortable",
2122
2835
  imported: 0,
2123
2836
  starter: 0
2124
2837
  });
2125
- return /* @__PURE__ */ t(F, {
2838
+ return /* @__PURE__ */ t(q, {
2126
2839
  className: m,
2127
2840
  "data-card-layout": e,
2128
2841
  title: p,
@@ -2139,15 +2852,15 @@ function Ot({ cardLayout: e = "auto", className: r, density: i = "comfortable",
2139
2852
  "aria-label": "Asset source counts",
2140
2853
  className: "game-ui-asset-library-counts",
2141
2854
  children: Object.entries(g).map(([e, t]) => /* @__PURE__ */ n(X, {
2142
- tone: Tt[e],
2855
+ tone: En[e],
2143
2856
  children: [
2144
- wt[e],
2857
+ Tn[e],
2145
2858
  " ",
2146
2859
  t
2147
2860
  ]
2148
2861
  }, e))
2149
2862
  }),
2150
- h === 0 ? /* @__PURE__ */ t(ht, {
2863
+ h === 0 ? /* @__PURE__ */ t(gn, {
2151
2864
  action: a,
2152
2865
  description: o,
2153
2866
  icon: "gem",
@@ -2159,13 +2872,13 @@ function Ot({ cardLayout: e = "auto", className: r, density: i = "comfortable",
2159
2872
  className: "game-ui-asset-library-group",
2160
2873
  "data-asset-source": r.source,
2161
2874
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: r.label }), r.source ? /* @__PURE__ */ t(X, {
2162
- tone: Tt[r.source],
2163
- children: wt[r.source]
2875
+ tone: En[r.source],
2876
+ children: Tn[r.source]
2164
2877
  }) : null] }), /* @__PURE__ */ t("div", {
2165
2878
  className: "game-ui-asset-library-grid",
2166
2879
  children: r.assets.map((n) => {
2167
2880
  let r = e === "auto" ? n.cardLayout : e;
2168
- return /* @__PURE__ */ t(Dt, {
2881
+ return /* @__PURE__ */ t(On, {
2169
2882
  ...n,
2170
2883
  ...r ? { cardLayout: r } : {},
2171
2884
  ...u ? { onSelect: u } : {},
@@ -2179,16 +2892,16 @@ function Ot({ cardLayout: e = "auto", className: r, density: i = "comfortable",
2179
2892
  })
2180
2893
  });
2181
2894
  }
2182
- function kt({ actions: e = [], capacityLabel: r = "Objects", className: i, density: a = "comfortable", maxObjects: o, objectActions: s = [], placedObjects: c, selectedLabel: l = "Selected", selectedTitle: u, statusLabel: d = "Status", statusTone: f = "neutral", statusValue: p = "Idle", title: m }) {
2895
+ function An({ actions: e = [], capacityLabel: r = "Objects", className: i, density: a = "comfortable", maxObjects: o, objectActions: s = [], placedObjects: c, selectedLabel: l = "Selected", selectedTitle: u, statusLabel: d = "Status", statusTone: f = "neutral", statusValue: p = "Idle", title: m }) {
2183
2896
  let h = ["game-ui-placement-toolbar", i].filter(Boolean).join(" "), g = typeof c == "number" && typeof o == "number", _ = g && o > 0 ? Math.min(o, c) : 0;
2184
- return /* @__PURE__ */ t(F, {
2897
+ return /* @__PURE__ */ t(q, {
2185
2898
  className: h,
2186
2899
  title: m,
2187
2900
  tone: "strong",
2188
2901
  children: /* @__PURE__ */ n("div", {
2189
2902
  "data-density": a,
2190
2903
  children: [
2191
- /* @__PURE__ */ t(vt, {
2904
+ /* @__PURE__ */ t(yn, {
2192
2905
  density: a,
2193
2906
  facts: [{
2194
2907
  icon: "gem",
@@ -2204,19 +2917,19 @@ function kt({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
2204
2917
  }],
2205
2918
  label: `${m} facts`
2206
2919
  }),
2207
- g ? /* @__PURE__ */ t(mt, {
2920
+ g ? /* @__PURE__ */ t(hn, {
2208
2921
  label: r,
2209
2922
  max: o,
2210
2923
  showValue: !0,
2211
2924
  tone: _ >= o ? "warning" : "success",
2212
2925
  value: _
2213
2926
  }) : null,
2214
- e.length > 0 ? /* @__PURE__ */ t(bt, {
2927
+ e.length > 0 ? /* @__PURE__ */ t(xn, {
2215
2928
  actions: e,
2216
2929
  density: a,
2217
2930
  label: `${m} actions`
2218
2931
  }) : null,
2219
- s.length > 0 ? /* @__PURE__ */ t(bt, {
2932
+ s.length > 0 ? /* @__PURE__ */ t(xn, {
2220
2933
  actions: s,
2221
2934
  density: a,
2222
2935
  label: `${m} object actions`,
@@ -2226,7 +2939,7 @@ function kt({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
2226
2939
  })
2227
2940
  });
2228
2941
  }
2229
- var At = kt, jt = {
2942
+ var jn = An, Mn = {
2230
2943
  build: "home",
2231
2944
  flatten: "card",
2232
2945
  inspect: "compass",
@@ -2236,7 +2949,7 @@ var At = kt, jt = {
2236
2949
  raise: "energy",
2237
2950
  smooth: "lucky",
2238
2951
  terrain: "portal"
2239
- }, Mt = {
2952
+ }, Nn = {
2240
2953
  error: "danger",
2241
2954
  locked: "warning",
2242
2955
  missing: "danger",
@@ -2244,10 +2957,10 @@ var At = kt, jt = {
2244
2957
  ready: "neutral",
2245
2958
  selected: "success"
2246
2959
  };
2247
- function Nt(e, t, n, r) {
2960
+ function Pn(e, t, n, r) {
2248
2961
  let i = {
2249
2962
  disabled: !!(r || e.disabled),
2250
- icon: e.icon ?? jt[e.id] ?? "gem",
2963
+ icon: e.icon ?? Mn[e.id] ?? "gem",
2251
2964
  id: e.id,
2252
2965
  label: e.label,
2253
2966
  selected: e.id === t,
@@ -2255,21 +2968,21 @@ function Nt(e, t, n, r) {
2255
2968
  };
2256
2969
  return e.ariaLabel && (i.ariaLabel = e.ariaLabel), e.compactLabel && (i.compactLabel = e.compactLabel), e.meta && (i.meta = e.meta), e.shortcut && (i.shortcut = e.shortcut), n && (i.onAction = n), i;
2257
2970
  }
2258
- function Pt(e, t, n) {
2971
+ function Fn(e, t, n) {
2259
2972
  return Number.isNaN(e) ? t : Math.min(n, Math.max(t, e));
2260
2973
  }
2261
- function Ft(e) {
2974
+ function In(e) {
2262
2975
  return e;
2263
2976
  }
2264
- function It(e, t) {
2977
+ function Ln(e, t) {
2265
2978
  return e === "auto" ? t === "mobile" || t === "small-mobile" ? "caption" : "hidden" : e;
2266
2979
  }
2267
- function Lt({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
2980
+ function Rn({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
2268
2981
  return /* @__PURE__ */ n("section", {
2269
2982
  "aria-label": a,
2270
2983
  className: ["game-ui-terrain-mode-control", r].filter(Boolean).join(" "),
2271
2984
  "data-ui-hook": "terrain-mode-control",
2272
- "data-variant": Ft(c),
2985
+ "data-variant": In(c),
2273
2986
  "data-testid": l,
2274
2987
  children: [/* @__PURE__ */ t("span", {
2275
2988
  className: "game-ui-sr-only",
@@ -2291,7 +3004,7 @@ function Lt({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
2291
3004
  type: "button",
2292
3005
  children: [
2293
3006
  /* @__PURE__ */ t(Z, {
2294
- icon: r.icon ?? jt[r.id] ?? "portal",
3007
+ icon: r.icon ?? Mn[r.id] ?? "portal",
2295
3008
  size: c === "small-mobile" ? "sm" : "md",
2296
3009
  style: "line"
2297
3010
  }),
@@ -2306,8 +3019,8 @@ function Lt({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
2306
3019
  })]
2307
3020
  });
2308
3021
  }
2309
- function Rt({ activeToolId: e, className: n, compactLabelMode: r = "auto", density: i = "comfortable", disabled: a = !1, label: o, onToolChange: s, tools: c, variant: l = "desktop", "data-testid": u }) {
2310
- let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = It(r, l);
3022
+ function zn({ activeToolId: e, className: n, compactLabelMode: r = "auto", density: i = "comfortable", disabled: a = !1, label: o, onToolChange: s, tools: c, variant: l = "desktop", "data-testid": u }) {
3023
+ let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = Ln(r, l);
2311
3024
  return /* @__PURE__ */ t("section", {
2312
3025
  "aria-label": o,
2313
3026
  className: d,
@@ -2316,8 +3029,8 @@ function Rt({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
2316
3029
  "data-ui-hook": "terrain-tool-strip",
2317
3030
  "data-variant": l,
2318
3031
  "data-testid": u,
2319
- children: /* @__PURE__ */ t(bt, {
2320
- actions: c.map((t) => Nt(t, e, s, a)),
3032
+ children: /* @__PURE__ */ t(xn, {
3033
+ actions: c.map((t) => Pn(t, e, s, a)),
2321
3034
  density: i,
2322
3035
  iconLabelMode: f,
2323
3036
  label: o,
@@ -2325,18 +3038,18 @@ function Rt({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
2325
3038
  })
2326
3039
  });
2327
3040
  }
2328
- function zt({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
2329
- let l = ["game-ui-brush-controls", e].filter(Boolean).join(" "), u = o.minRadius ?? 1, d = o.maxRadius ?? 8, f = o.radiusStep ?? .25, p = o.minStrength ?? 0, m = o.maxStrength ?? 1, h = o.strengthStep ?? .05, g = Pt(o.radius, u, d), _ = Pt(o.strength, p, m), v = !!o.disabled, y = (e) => {
2330
- i?.(Pt(Number(e.currentTarget.value), u, d));
3041
+ function Bn({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
3042
+ let l = ["game-ui-brush-controls", e].filter(Boolean).join(" "), u = o.minRadius ?? 1, d = o.maxRadius ?? 8, f = o.radiusStep ?? .25, p = o.minStrength ?? 0, m = o.maxStrength ?? 1, h = o.strengthStep ?? .05, g = Fn(o.radius, u, d), _ = Fn(o.strength, p, m), v = !!o.disabled, y = (e) => {
3043
+ i?.(Fn(Number(e.currentTarget.value), u, d));
2331
3044
  }, b = (e) => {
2332
- a?.(Pt(Number(e.currentTarget.value), p, m));
3045
+ a?.(Fn(Number(e.currentTarget.value), p, m));
2333
3046
  };
2334
3047
  return /* @__PURE__ */ n("section", {
2335
3048
  className: l,
2336
3049
  "data-ui-hook": "brush-controls",
2337
3050
  "data-variant": s,
2338
3051
  "data-testid": c,
2339
- children: [/* @__PURE__ */ t(ut, {
3052
+ children: [/* @__PURE__ */ t(dn, {
2340
3053
  ...r.radiusHint ? { hint: r.radiusHint } : {},
2341
3054
  label: r.radius ?? "Brush radius",
2342
3055
  children: /* @__PURE__ */ n("div", {
@@ -2366,7 +3079,7 @@ function zt({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
2366
3079
  value: g
2367
3080
  })]
2368
3081
  })
2369
- }), /* @__PURE__ */ t(ut, {
3082
+ }), /* @__PURE__ */ t(dn, {
2370
3083
  ...r.strengthHint ? { hint: r.strengthHint } : {},
2371
3084
  label: r.strength ?? "Brush strength",
2372
3085
  children: /* @__PURE__ */ n("div", {
@@ -2399,7 +3112,7 @@ function zt({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
2399
3112
  })]
2400
3113
  });
2401
3114
  }
2402
- function Bt({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
3115
+ function Vn({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
2403
3116
  return /* @__PURE__ */ t("section", {
2404
3117
  "aria-label": a,
2405
3118
  className: ["game-ui-material-swatches", r].filter(Boolean).join(" "),
@@ -2442,14 +3155,14 @@ function Bt({ activeMaterialId: e, className: r, disabled: i = !1, label: a, mat
2442
3155
  })
2443
3156
  });
2444
3157
  }
2445
- function Vt({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1, label: a, onRedo: o, onUndo: s, redoLabel: c = "Redo", undoLabel: l = "Undo", variant: u = "desktop", "data-testid": d }) {
3158
+ function Hn({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1, label: a, onRedo: o, onUndo: s, redoLabel: c = "Redo", undoLabel: l = "Undo", variant: u = "desktop", "data-testid": d }) {
2446
3159
  return /* @__PURE__ */ t("section", {
2447
3160
  "aria-label": a,
2448
3161
  className: ["game-ui-undo-redo-actions", r].filter(Boolean).join(" "),
2449
3162
  "data-ui-hook": "undo-redo-actions",
2450
3163
  "data-variant": u,
2451
3164
  "data-testid": d,
2452
- children: /* @__PURE__ */ t(bt, {
3165
+ children: /* @__PURE__ */ t(xn, {
2453
3166
  actions: [{
2454
3167
  disabled: i || !n,
2455
3168
  icon: "undo",
@@ -2475,9 +3188,9 @@ function Vt({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1,
2475
3188
  })
2476
3189
  });
2477
3190
  }
2478
- function Ht({ activeCategoryId: e, categories: r, className: i, density: a = "comfortable", emptyDescription: o = "Building pieces will appear here when a category is available.", emptyTitle: s = "No build pieces ready", label: c, onCategoryChange: l, onSelectItem: u, selectedItemId: d, title: f, variant: p = "desktop", "data-testid": m }) {
3191
+ function Un({ activeCategoryId: e, categories: r, className: i, density: a = "comfortable", emptyDescription: o = "Building pieces will appear here when a category is available.", emptyTitle: s = "No build pieces ready", label: c, onCategoryChange: l, onSelectItem: u, selectedItemId: d, title: f, variant: p = "desktop", "data-testid": m }) {
2479
3192
  let h = ["game-ui-build-library", i].filter(Boolean).join(" "), g = r.filter((e) => !e.disabled), _ = r.find((t) => t.id === e) ?? g[0] ?? r[0], v = _?.items ?? [], y = p === "small-mobile";
2480
- return /* @__PURE__ */ t(F, {
3193
+ return /* @__PURE__ */ t(q, {
2481
3194
  className: h,
2482
3195
  "data-ui-hook": "build-library",
2483
3196
  "data-variant": p,
@@ -2505,7 +3218,7 @@ function Ht({ activeCategoryId: e, categories: r, className: i, density: a = "co
2505
3218
  type: "button",
2506
3219
  children: [
2507
3220
  /* @__PURE__ */ t(Z, {
2508
- icon: e.icon ?? jt[e.id] ?? "home",
3221
+ icon: e.icon ?? Mn[e.id] ?? "home",
2509
3222
  size: "sm",
2510
3223
  style: "line"
2511
3224
  }),
@@ -2514,7 +3227,7 @@ function Ht({ activeCategoryId: e, categories: r, className: i, density: a = "co
2514
3227
  ]
2515
3228
  }, e.id);
2516
3229
  })
2517
- }), v.length === 0 || !_ ? /* @__PURE__ */ t(ht, {
3230
+ }), v.length === 0 || !_ ? /* @__PURE__ */ t(gn, {
2518
3231
  description: o,
2519
3232
  icon: "home",
2520
3233
  title: s
@@ -2552,7 +3265,7 @@ function Ht({ activeCategoryId: e, categories: r, className: i, density: a = "co
2552
3265
  /* @__PURE__ */ n("span", {
2553
3266
  className: "game-ui-build-item-badges",
2554
3267
  children: [/* @__PURE__ */ t(X, {
2555
- tone: Mt[i],
3268
+ tone: Nn[i],
2556
3269
  children: i
2557
3270
  }), e.badges?.map((e) => /* @__PURE__ */ t(X, {
2558
3271
  tone: e.tone ?? "neutral",
@@ -2570,7 +3283,7 @@ function Ht({ activeCategoryId: e, categories: r, className: i, density: a = "co
2570
3283
  })
2571
3284
  });
2572
3285
  }
2573
- function Ut({ children: e, className: r, closeIcon: i = "close", closeLabel: a = "Close tools", disabled: o = !1, label: s, onOpenChange: c, open: l, panelId: u, title: d, triggerIcon: f = "settings", triggerLabel: p = "Tools", variant: m = "mobile", "data-testid": h }) {
3286
+ function Wn({ children: e, className: r, closeIcon: i = "close", closeLabel: a = "Close tools", disabled: o = !1, label: s, onOpenChange: c, open: l, panelId: u, title: d, triggerIcon: f = "settings", triggerLabel: p = "Tools", variant: m = "mobile", "data-testid": h }) {
2574
3287
  let g = ["game-ui-compact-game-drawer", r].filter(Boolean).join(" "), _ = u ?? `${d.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "tools"}-drawer-panel`;
2575
3288
  return /* @__PURE__ */ n("aside", {
2576
3289
  "aria-label": s,
@@ -2579,7 +3292,7 @@ function Ut({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
2579
3292
  "data-ui-hook": "compact-game-drawer",
2580
3293
  "data-variant": m,
2581
3294
  "data-testid": h,
2582
- children: [/* @__PURE__ */ n(b, {
3295
+ children: [/* @__PURE__ */ n(w, {
2583
3296
  "aria-controls": _,
2584
3297
  "aria-expanded": l,
2585
3298
  className: "game-ui-compact-game-drawer-trigger",
@@ -2597,7 +3310,7 @@ function Ut({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
2597
3310
  className: "game-ui-compact-game-drawer-panel",
2598
3311
  "data-drawer-panel": "true",
2599
3312
  id: _,
2600
- children: /* @__PURE__ */ t(F, {
3313
+ children: /* @__PURE__ */ t(q, {
2601
3314
  title: d,
2602
3315
  tone: "strong",
2603
3316
  children: e
@@ -2605,7 +3318,7 @@ function Ut({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
2605
3318
  })]
2606
3319
  });
2607
3320
  }
2608
- function Wt({ status: e }) {
3321
+ function Gn({ status: e }) {
2609
3322
  if (!e) return null;
2610
3323
  let r = typeof e.progressValue == "number" && typeof e.progressMax == "number", i = e.tone === "danger" ? "danger" : e.tone === "warning" ? "warning" : "success", a = e.progressMax ?? 100, o = e.progressValue ?? 0;
2611
3324
  return /* @__PURE__ */ n("div", {
@@ -2618,7 +3331,7 @@ function Wt({ status: e }) {
2618
3331
  children: e.label
2619
3332
  }),
2620
3333
  e.description ? /* @__PURE__ */ t("p", { children: e.description }) : null,
2621
- r ? /* @__PURE__ */ t(mt, {
3334
+ r ? /* @__PURE__ */ t(hn, {
2622
3335
  label: e.progressLabel ?? e.label,
2623
3336
  max: a,
2624
3337
  showValue: !0,
@@ -2628,66 +3341,66 @@ function Wt({ status: e }) {
2628
3341
  ]
2629
3342
  });
2630
3343
  }
2631
- function Gt({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, activeToolId: a, brush: o, buildCategories: s = [], density: c = "comfortable", disabled: l = !1, materials: u = [], modes: d, onBrushRadiusChange: f, onBrushStrengthChange: p, onBuildCategoryChange: m, onMaterialChange: h, onModeChange: g, onRedo: _, onSelectBuildItem: v, onToolChange: y, onUndo: b, selectedBuildItemId: x, status: S, toolCompactLabelMode: C = "auto", tools: ee, undoRedo: w, variant: T = "desktop" }) {
3344
+ function Kn({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, activeToolId: a, brush: o, buildCategories: s = [], density: c = "comfortable", disabled: l = !1, materials: u = [], modes: d, onBrushRadiusChange: f, onBrushStrengthChange: p, onBuildCategoryChange: m, onMaterialChange: h, onModeChange: g, onRedo: _, onSelectBuildItem: v, onToolChange: y, onUndo: b, selectedBuildItemId: x, status: S, toolCompactLabelMode: C = "auto", tools: w, undoRedo: T, variant: E = "desktop" }) {
2632
3345
  return /* @__PURE__ */ n("div", {
2633
3346
  className: "game-ui-terrain-build-toolbox-body",
2634
3347
  "data-active-mode": i,
2635
3348
  "data-active-tool": a,
2636
- "data-variant": T,
3349
+ "data-variant": E,
2637
3350
  children: [
2638
- /* @__PURE__ */ t(Wt, { status: S }),
2639
- /* @__PURE__ */ t(Lt, {
3351
+ /* @__PURE__ */ t(Gn, { status: S }),
3352
+ /* @__PURE__ */ t(Rn, {
2640
3353
  activeModeId: i,
2641
3354
  disabled: l,
2642
3355
  label: "Tool mode",
2643
3356
  modes: d,
2644
3357
  onModeChange: g,
2645
- variant: T
3358
+ variant: E
2646
3359
  }),
2647
3360
  /* @__PURE__ */ n("div", {
2648
3361
  className: "game-ui-terrain-build-main-grid",
2649
3362
  children: [
2650
- /* @__PURE__ */ t(Rt, {
3363
+ /* @__PURE__ */ t(zn, {
2651
3364
  activeToolId: a,
2652
3365
  compactLabelMode: C,
2653
3366
  density: c,
2654
3367
  disabled: l,
2655
3368
  label: "Terrain tools",
2656
3369
  onToolChange: y,
2657
- tools: ee,
2658
- variant: T
3370
+ tools: w,
3371
+ variant: E
2659
3372
  }),
2660
- /* @__PURE__ */ t(Vt, {
2661
- canRedo: w?.canRedo,
2662
- canUndo: w?.canUndo,
3373
+ /* @__PURE__ */ t(Hn, {
3374
+ canRedo: T?.canRedo,
3375
+ canUndo: T?.canUndo,
2663
3376
  disabled: l,
2664
3377
  label: "Terrain history",
2665
3378
  onRedo: _,
2666
3379
  onUndo: b,
2667
- redoLabel: w?.redoLabel,
2668
- undoLabel: w?.undoLabel,
2669
- variant: T
3380
+ redoLabel: T?.redoLabel,
3381
+ undoLabel: T?.undoLabel,
3382
+ variant: E
2670
3383
  }),
2671
- /* @__PURE__ */ t(zt, {
3384
+ /* @__PURE__ */ t(Bn, {
2672
3385
  onRadiusChange: f,
2673
3386
  onStrengthChange: p,
2674
3387
  state: {
2675
3388
  ...o,
2676
3389
  disabled: !!(l || o.disabled)
2677
3390
  },
2678
- variant: T
3391
+ variant: E
2679
3392
  }),
2680
- u.length > 0 ? /* @__PURE__ */ t(Bt, {
3393
+ u.length > 0 ? /* @__PURE__ */ t(Vn, {
2681
3394
  activeMaterialId: r,
2682
3395
  disabled: l,
2683
3396
  label: "Terrain materials",
2684
3397
  materials: u,
2685
3398
  onMaterialChange: h,
2686
- variant: T
3399
+ variant: E
2687
3400
  }) : null
2688
3401
  ]
2689
3402
  }),
2690
- s.length > 0 ? /* @__PURE__ */ t(Ht, {
3403
+ s.length > 0 ? /* @__PURE__ */ t(Un, {
2691
3404
  activeCategoryId: e,
2692
3405
  categories: s,
2693
3406
  density: c,
@@ -2696,17 +3409,17 @@ function Gt({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
2696
3409
  onSelectItem: v,
2697
3410
  selectedItemId: x,
2698
3411
  title: "Build pieces",
2699
- variant: T
3412
+ variant: E
2700
3413
  }) : null
2701
3414
  ]
2702
3415
  });
2703
3416
  }
2704
- function Kt({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
2705
- let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(Gt, {
3417
+ function qn({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
3418
+ let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(Kn, {
2706
3419
  ...l,
2707
3420
  variant: s
2708
3421
  });
2709
- return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Ut, {
3422
+ return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Wn, {
2710
3423
  className: u,
2711
3424
  label: i,
2712
3425
  onOpenChange: a,
@@ -2716,7 +3429,7 @@ function Kt({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and bu
2716
3429
  variant: s,
2717
3430
  "data-testid": c,
2718
3431
  children: d
2719
- }) : /* @__PURE__ */ t(F, {
3432
+ }) : /* @__PURE__ */ t(q, {
2720
3433
  className: u,
2721
3434
  "data-ui-hook": "terrain-build-toolbox",
2722
3435
  "data-variant": s,
@@ -2731,7 +3444,7 @@ function Kt({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and bu
2731
3444
  }
2732
3445
  //#endregion
2733
3446
  //#region src/GameContractorTools.tsx
2734
- var qt = {
3447
+ var Jn = {
2735
3448
  accepted: "success",
2736
3449
  blocked: "danger",
2737
3450
  cancelled: "neutral",
@@ -2740,7 +3453,7 @@ var qt = {
2740
3453
  queued: "warning",
2741
3454
  readyForReview: "success",
2742
3455
  working: "ai"
2743
- }, Jt = {
3456
+ }, Yn = {
2744
3457
  accepted: "check",
2745
3458
  blocked: "alert",
2746
3459
  cancelled: "close",
@@ -2749,26 +3462,26 @@ var qt = {
2749
3462
  queued: "hourglass",
2750
3463
  readyForReview: "vote",
2751
3464
  working: "energy"
2752
- }, Yt = {
3465
+ }, Xn = {
2753
3466
  active: "ai",
2754
3467
  blocked: "danger",
2755
3468
  complete: "success",
2756
3469
  pending: "neutral"
2757
- }, Xt = {
3470
+ }, Zn = {
2758
3471
  blocked: "danger",
2759
3472
  done: "success",
2760
3473
  idle: "neutral",
2761
3474
  queued: "warning",
2762
3475
  working: "ai"
2763
- }, Zt = {
3476
+ }, Qn = {
2764
3477
  "local-only": "Local only",
2765
3478
  mock: "Mock run",
2766
3479
  "paid-disabled": "Paid provider off"
2767
- }, Qt = {
3480
+ }, $n = {
2768
3481
  "local-only": "success",
2769
3482
  mock: "ai",
2770
3483
  "paid-disabled": "warning"
2771
- }, $t = {
3484
+ }, er = {
2772
3485
  accepted: [{
2773
3486
  id: "revert",
2774
3487
  label: "Revert",
@@ -2874,17 +3587,17 @@ var qt = {
2874
3587
  tone: "danger"
2875
3588
  }]
2876
3589
  };
2877
- function en(e, t) {
3590
+ function tr(e, t) {
2878
3591
  if (t) return t;
2879
3592
  switch (e) {
2880
3593
  case "readyForReview": return "Ready for review";
2881
3594
  default: return e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase());
2882
3595
  }
2883
3596
  }
2884
- function tn(e) {
3597
+ function nr(e) {
2885
3598
  return e === "blocked" || e === "cancelled" ? "danger" : e === "accepted" || e === "readyForReview" ? "success" : e === "queued" || e === "draft" || e === "preview" ? "warning" : "accent";
2886
3599
  }
2887
- function nn(e) {
3600
+ function rr(e) {
2888
3601
  switch (e) {
2889
3602
  case "accepted": return 100;
2890
3603
  case "blocked": return 42;
@@ -2896,7 +3609,7 @@ function nn(e) {
2896
3609
  case "working": return 64;
2897
3610
  }
2898
3611
  }
2899
- function rn(e, t, n) {
3612
+ function ir(e, t, n) {
2900
3613
  let r = {
2901
3614
  disabled: !!(n || e.disabled),
2902
3615
  id: e.id,
@@ -2905,14 +3618,14 @@ function rn(e, t, n) {
2905
3618
  };
2906
3619
  return e.icon && (r.icon = e.icon), e.ariaLabel && (r.ariaLabel = e.ariaLabel), e.meta && (r.meta = e.meta), t && (r.onAction = t), r;
2907
3620
  }
2908
- function an(e) {
3621
+ function ar(e) {
2909
3622
  return e === "danger" || e === "warning" ? "alert" : "status";
2910
3623
  }
2911
- function on(e) {
3624
+ function or(e) {
2912
3625
  return !!(e.before && e.after);
2913
3626
  }
2914
- function sn({ className: e, label: r, max: i = 100, progressLabel: a = "Construction progress", showStatusBadge: o = !0, status: s, statusLabel: c, steps: l = [], validationWarnings: u = [], value: d, variant: f = "desktop", "data-testid": p }) {
2915
- let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? nn(s), g = en(s, c);
3627
+ function sr({ className: e, label: r, max: i = 100, progressLabel: a = "Construction progress", showStatusBadge: o = !0, status: s, statusLabel: c, steps: l = [], validationWarnings: u = [], value: d, variant: f = "desktop", "data-testid": p }) {
3628
+ let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? rr(s), g = tr(s, c);
2916
3629
  return /* @__PURE__ */ n("section", {
2917
3630
  "aria-label": r,
2918
3631
  className: m,
@@ -2924,18 +3637,18 @@ function sn({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
2924
3637
  /* @__PURE__ */ n("header", {
2925
3638
  className: "game-ui-construction-progress-header",
2926
3639
  children: [/* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t(Z, {
2927
- icon: Jt[s],
3640
+ icon: Yn[s],
2928
3641
  size: "sm"
2929
3642
  }), /* @__PURE__ */ t("strong", { children: a })] }), o ? /* @__PURE__ */ t(X, {
2930
- tone: qt[s],
3643
+ tone: Jn[s],
2931
3644
  children: g
2932
3645
  }) : null]
2933
3646
  }),
2934
- /* @__PURE__ */ t(mt, {
3647
+ /* @__PURE__ */ t(hn, {
2935
3648
  label: a,
2936
3649
  max: i,
2937
3650
  showValue: !0,
2938
- tone: tn(s),
3651
+ tone: nr(s),
2939
3652
  value: h
2940
3653
  }),
2941
3654
  l.length > 0 ? /* @__PURE__ */ t("ol", {
@@ -2950,7 +3663,7 @@ function sn({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
2950
3663
  }),
2951
3664
  /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: e.label }), e.caption ? /* @__PURE__ */ t("small", { children: e.caption }) : null] }),
2952
3665
  /* @__PURE__ */ t(X, {
2953
- tone: Yt[e.status],
3666
+ tone: Xn[e.status],
2954
3667
  children: e.status
2955
3668
  })
2956
3669
  ]
@@ -2962,7 +3675,7 @@ function sn({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
2962
3675
  children: u.map((e) => /* @__PURE__ */ n("div", {
2963
3676
  className: "game-ui-construction-warning",
2964
3677
  "data-warning-tone": e.tone ?? "warning",
2965
- role: an(e.tone),
3678
+ role: ar(e.tone),
2966
3679
  children: [/* @__PURE__ */ t(Z, {
2967
3680
  icon: e.tone === "danger" || e.tone === "warning" ? "alert" : "check",
2968
3681
  size: "sm"
@@ -2972,8 +3685,8 @@ function sn({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
2972
3685
  ]
2973
3686
  });
2974
3687
  }
2975
- function cn({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLabel: o = "Local-only construction", onAction: s, providerMode: c, status: l, validationWarnings: u = [], variant: d = "desktop", "data-testid": f }) {
2976
- let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? $t[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => rn(e, s, i));
3688
+ function cr({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLabel: o = "Local-only construction", onAction: s, providerMode: c, status: l, validationWarnings: u = [], variant: d = "desktop", "data-testid": f }) {
3689
+ let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? er[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => ir(e, s, i));
2977
3690
  return /* @__PURE__ */ n("section", {
2978
3691
  "aria-label": a,
2979
3692
  className: p,
@@ -2984,8 +3697,8 @@ function cn({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
2984
3697
  children: [/* @__PURE__ */ n("div", {
2985
3698
  className: "game-ui-construction-approval-meta",
2986
3699
  children: [c ? /* @__PURE__ */ t(X, {
2987
- tone: Qt[c],
2988
- children: Zt[c]
3700
+ tone: $n[c],
3701
+ children: Qn[c]
2989
3702
  }) : /* @__PURE__ */ t(X, {
2990
3703
  tone: "success",
2991
3704
  children: o
@@ -3000,21 +3713,21 @@ function cn({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
3000
3713
  tone: "success",
3001
3714
  children: "Validation clear"
3002
3715
  })]
3003
- }), g.length > 0 ? /* @__PURE__ */ t(bt, {
3716
+ }), g.length > 0 ? /* @__PURE__ */ t(xn, {
3004
3717
  actions: g,
3005
3718
  density: d === "small-mobile" ? "dense" : "comfortable",
3006
3719
  label: `${a} actions`
3007
3720
  }) : null]
3008
3721
  });
3009
3722
  }
3010
- function ln({ className: e, crew: r, emptyDescription: i = "Robot crew members appear here when a construction job starts.", emptyTitle: a = "No robot crew assigned", label: o, title: s, variant: c = "desktop", "data-testid": l }) {
3723
+ function lr({ className: e, crew: r, emptyDescription: i = "Robot crew members appear here when a construction job starts.", emptyTitle: a = "No robot crew assigned", label: o, title: s, variant: c = "desktop", "data-testid": l }) {
3011
3724
  return /* @__PURE__ */ n("section", {
3012
3725
  "aria-label": o,
3013
3726
  className: ["game-ui-robot-crew-status", e].filter(Boolean).join(" "),
3014
3727
  "data-ui-hook": "robot-crew-status",
3015
3728
  "data-variant": c,
3016
3729
  "data-testid": l,
3017
- children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(ht, {
3730
+ children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(gn, {
3018
3731
  description: i,
3019
3732
  icon: "ai",
3020
3733
  title: a
@@ -3037,7 +3750,7 @@ function ln({ className: e, crew: r, emptyDescription: i = "Robot crew members a
3037
3750
  ]
3038
3751
  }),
3039
3752
  /* @__PURE__ */ t(X, {
3040
- tone: Xt[e.status],
3753
+ tone: Zn[e.status],
3041
3754
  children: e.status
3042
3755
  })
3043
3756
  ]
@@ -3045,7 +3758,7 @@ function ln({ className: e, crew: r, emptyDescription: i = "Robot crew members a
3045
3758
  })]
3046
3759
  });
3047
3760
  }
3048
- function un({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
3761
+ function ur({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
3049
3762
  let u = ["game-ui-before-after-toggle", a].filter(Boolean).join(" "), d = e === "before" ? i : r;
3050
3763
  return /* @__PURE__ */ n("section", {
3051
3764
  "aria-label": o,
@@ -3054,7 +3767,7 @@ function un({ activeView: e, after: r, before: i, className: a, label: o, onView
3054
3767
  "data-ui-hook": "before-after-toggle",
3055
3768
  "data-variant": c,
3056
3769
  "data-testid": l,
3057
- children: [/* @__PURE__ */ t(R, {
3770
+ children: [/* @__PURE__ */ t(ut, {
3058
3771
  activeId: e,
3059
3772
  label: `${o} view`,
3060
3773
  ...s ? { onSelect: (e) => s(e) } : {},
@@ -3081,8 +3794,8 @@ function un({ activeView: e, after: r, before: i, className: a, label: o, onView
3081
3794
  })]
3082
3795
  });
3083
3796
  }
3084
- function dn({ className: e, density: r = "comfortable", job: i, onAction: a, onSelect: o, selected: s = !1, showApprovalBar: c = !0, showBeforeAfter: l = !1, variant: u = "desktop", "data-testid": d }) {
3085
- let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = en(i.status, i.statusLabel), m = u === "mobile" || u === "small-mobile", h = i.facts ?? [];
3797
+ function dr({ className: e, density: r = "comfortable", job: i, onAction: a, onSelect: o, selected: s = !1, showApprovalBar: c = !0, showBeforeAfter: l = !1, variant: u = "desktop", "data-testid": d }) {
3798
+ let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = tr(i.status, i.statusLabel), m = u === "mobile" || u === "small-mobile", h = i.facts ?? [];
3086
3799
  return /* @__PURE__ */ n("article", {
3087
3800
  className: f,
3088
3801
  "data-density": r,
@@ -3102,19 +3815,19 @@ function dn({ className: e, density: r = "comfortable", job: i, onAction: a, onS
3102
3815
  onClick: () => o?.(i.id),
3103
3816
  type: "button",
3104
3817
  children: [/* @__PURE__ */ t(Z, {
3105
- icon: Jt[i.status],
3818
+ icon: Yn[i.status],
3106
3819
  size: m ? "sm" : "md"
3107
3820
  }), /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: i.title }), i.description ? /* @__PURE__ */ t("small", { children: i.description }) : null] })]
3108
3821
  }), /* @__PURE__ */ n("span", {
3109
3822
  className: "game-ui-construction-job-badges",
3110
3823
  children: [
3111
3824
  /* @__PURE__ */ t(X, {
3112
- tone: qt[i.status],
3825
+ tone: Jn[i.status],
3113
3826
  children: p
3114
3827
  }),
3115
3828
  i.providerMode ? /* @__PURE__ */ t(X, {
3116
- tone: Qt[i.providerMode],
3117
- children: Zt[i.providerMode]
3829
+ tone: $n[i.providerMode],
3830
+ children: Qn[i.providerMode]
3118
3831
  }) : null,
3119
3832
  i.badges?.map((e) => /* @__PURE__ */ t(X, {
3120
3833
  tone: e.tone ?? "neutral",
@@ -3132,7 +3845,7 @@ function dn({ className: e, density: r = "comfortable", job: i, onAction: a, onS
3132
3845
  h.map((e) => /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("small", { children: e.label }), /* @__PURE__ */ t("b", { children: e.value })] }, e.id))
3133
3846
  ]
3134
3847
  }),
3135
- /* @__PURE__ */ t(sn, {
3848
+ /* @__PURE__ */ t(sr, {
3136
3849
  label: `${i.title} progress`,
3137
3850
  progressLabel: i.progressLabel,
3138
3851
  status: i.status,
@@ -3143,19 +3856,19 @@ function dn({ className: e, density: r = "comfortable", job: i, onAction: a, onS
3143
3856
  max: i.progressMax,
3144
3857
  variant: u
3145
3858
  }),
3146
- l && on(i) ? /* @__PURE__ */ t(un, {
3859
+ l && or(i) ? /* @__PURE__ */ t(ur, {
3147
3860
  activeView: "after",
3148
3861
  after: i.after,
3149
3862
  before: i.before,
3150
3863
  label: `${i.title} preview`,
3151
3864
  variant: u
3152
3865
  }) : null,
3153
- i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(ln, {
3866
+ i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(lr, {
3154
3867
  crew: i.crew,
3155
3868
  label: `${i.title} robot crew`,
3156
3869
  variant: u
3157
3870
  }) : null,
3158
- c ? /* @__PURE__ */ t(cn, {
3871
+ c ? /* @__PURE__ */ t(cr, {
3159
3872
  actions: i.actions,
3160
3873
  label: `${i.title} approval`,
3161
3874
  onAction: (e) => a?.(e, i.id),
@@ -3167,8 +3880,8 @@ function dn({ className: e, density: r = "comfortable", job: i, onAction: a, onS
3167
3880
  ]
3168
3881
  });
3169
3882
  }
3170
- function fn({ children: e, className: n, closeLabel: r = "Close jobs", disabled: i = !1, jobs: a = [], label: o, onAction: s, onOpenChange: c, onSelectJob: l, open: u, panelId: d = "game-compact-job-drawer-panel", selectedJobId: f, title: p, triggerLabel: m = "Construction jobs", variant: h = "mobile", "data-testid": g }) {
3171
- return /* @__PURE__ */ t(Ut, {
3883
+ function fr({ children: e, className: n, closeLabel: r = "Close jobs", disabled: i = !1, jobs: a = [], label: o, onAction: s, onOpenChange: c, onSelectJob: l, open: u, panelId: d = "game-compact-job-drawer-panel", selectedJobId: f, title: p, triggerLabel: m = "Construction jobs", variant: h = "mobile", "data-testid": g }) {
3884
+ return /* @__PURE__ */ t(Wn, {
3172
3885
  className: ["game-ui-compact-job-drawer", n].filter(Boolean).join(" "),
3173
3886
  closeLabel: r,
3174
3887
  disabled: i,
@@ -3184,7 +3897,7 @@ function fn({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
3184
3897
  children: e ?? /* @__PURE__ */ t("div", {
3185
3898
  className: "game-ui-compact-job-drawer-list",
3186
3899
  tabIndex: 0,
3187
- children: a.map((e) => /* @__PURE__ */ t(dn, {
3900
+ children: a.map((e) => /* @__PURE__ */ t(dr, {
3188
3901
  density: "dense",
3189
3902
  job: e,
3190
3903
  onAction: s,
@@ -3196,7 +3909,7 @@ function fn({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
3196
3909
  })
3197
3910
  });
3198
3911
  }
3199
- function pn({ activePreviewView: e = "after", className: r, density: i = "comfortable", drawerOpen: a = !1, emptyDescription: o = "Draft construction jobs will appear here before any provider call is allowed.", emptyTitle: s = "No construction jobs", jobs: c, label: l, onAction: u, onDrawerOpenChange: d, onPreviewViewChange: f, onSelectJob: p, selectedJobId: m, subtitle: h, title: g, variant: _ = "desktop", "data-testid": v }) {
3912
+ function pr({ activePreviewView: e = "after", className: r, density: i = "comfortable", drawerOpen: a = !1, emptyDescription: o = "Draft construction jobs will appear here before any provider call is allowed.", emptyTitle: s = "No construction jobs", jobs: c, label: l, onAction: u, onDrawerOpenChange: d, onPreviewViewChange: f, onSelectJob: p, selectedJobId: m, subtitle: h, title: g, variant: _ = "desktop", "data-testid": v }) {
3200
3913
  let y = ["game-ui-contractor-panel", r].filter(Boolean).join(" "), b = c.find((e) => e.id === m) ?? c[0];
3201
3914
  return _ === "mobile" || _ === "small-mobile" ? /* @__PURE__ */ n("section", {
3202
3915
  "aria-label": l,
@@ -3205,7 +3918,7 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3205
3918
  "data-variant": _,
3206
3919
  "data-testid": v,
3207
3920
  children: [
3208
- /* @__PURE__ */ t(fn, {
3921
+ /* @__PURE__ */ t(fr, {
3209
3922
  jobs: c,
3210
3923
  label: `${l} drawer`,
3211
3924
  onAction: u,
@@ -3217,22 +3930,22 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3217
3930
  triggerLabel: "Contractor",
3218
3931
  variant: _
3219
3932
  }),
3220
- b && !a ? /* @__PURE__ */ t(dn, {
3933
+ b && !a ? /* @__PURE__ */ t(dr, {
3221
3934
  density: "dense",
3222
3935
  job: b,
3223
3936
  onAction: u,
3224
3937
  onSelect: p,
3225
3938
  selected: !0,
3226
- showBeforeAfter: on(b),
3939
+ showBeforeAfter: or(b),
3227
3940
  variant: _
3228
3941
  }) : null,
3229
- b ? null : /* @__PURE__ */ t(ht, {
3942
+ b ? null : /* @__PURE__ */ t(gn, {
3230
3943
  description: o,
3231
3944
  icon: "energy",
3232
3945
  title: s
3233
3946
  })
3234
3947
  ]
3235
- }) : /* @__PURE__ */ t(F, {
3948
+ }) : /* @__PURE__ */ t(q, {
3236
3949
  className: y,
3237
3950
  "data-ui-hook": "contractor-panel",
3238
3951
  "data-variant": _,
@@ -3247,7 +3960,7 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3247
3960
  className: "game-ui-contractor-panel-subtitle",
3248
3961
  children: h
3249
3962
  }) : null,
3250
- c.length === 0 ? /* @__PURE__ */ t(ht, {
3963
+ c.length === 0 ? /* @__PURE__ */ t(gn, {
3251
3964
  description: o,
3252
3965
  icon: "energy",
3253
3966
  title: s
@@ -3258,7 +3971,7 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3258
3971
  "aria-label": "Construction job queue",
3259
3972
  className: "game-ui-contractor-job-list",
3260
3973
  tabIndex: 0,
3261
- children: c.map((e) => /* @__PURE__ */ t(dn, {
3974
+ children: c.map((e) => /* @__PURE__ */ t(dr, {
3262
3975
  density: i,
3263
3976
  job: e,
3264
3977
  onAction: u,
@@ -3271,7 +3984,7 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3271
3984
  className: "game-ui-contractor-detail",
3272
3985
  "aria-label": `${b.title} detail`,
3273
3986
  children: [
3274
- /* @__PURE__ */ t(sn, {
3987
+ /* @__PURE__ */ t(sr, {
3275
3988
  label: `${b.title} progress detail`,
3276
3989
  progressLabel: b.progressLabel,
3277
3990
  status: b.status,
@@ -3282,7 +3995,7 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3282
3995
  max: b.progressMax,
3283
3996
  variant: _
3284
3997
  }),
3285
- on(b) ? /* @__PURE__ */ t(un, {
3998
+ or(b) ? /* @__PURE__ */ t(ur, {
3286
3999
  activeView: e,
3287
4000
  after: b.after,
3288
4001
  before: b.before,
@@ -3290,13 +4003,13 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3290
4003
  onViewChange: f,
3291
4004
  variant: _
3292
4005
  }) : null,
3293
- /* @__PURE__ */ t(ln, {
4006
+ /* @__PURE__ */ t(lr, {
3294
4007
  crew: b.crew ?? [],
3295
4008
  label: `${b.title} robot crew`,
3296
4009
  title: "Robot crew",
3297
4010
  variant: _
3298
4011
  }),
3299
- /* @__PURE__ */ t(cn, {
4012
+ /* @__PURE__ */ t(cr, {
3300
4013
  actions: b.actions,
3301
4014
  label: `${b.title} approval`,
3302
4015
  onAction: u ? (e) => u(e, b.id) : void 0,
@@ -3314,32 +4027,32 @@ function pn({ activePreviewView: e = "after", className: r, density: i = "comfor
3314
4027
  }
3315
4028
  //#endregion
3316
4029
  //#region src/GamePanelSystem.tsx
3317
- function mn(...e) {
4030
+ function mr(...e) {
3318
4031
  return e.filter(Boolean).join(" ");
3319
4032
  }
3320
- var hn = {
4033
+ var hr = {
3321
4034
  collapse: "Collapse",
3322
4035
  expand: "Expand"
3323
4036
  };
3324
- function gn({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: u, tone: f = "default", ...p }) {
3325
- let m = l(), [h, g] = d(a), _ = c ?? h, v = {
3326
- ...hn,
4037
+ function gr({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: l, tone: d = "default", ...f }) {
4038
+ let p = u(), [h, g] = m(a), _ = c ?? h, v = {
4039
+ ...hr,
3327
4040
  ...o
3328
4041
  }, y = () => {
3329
4042
  let e = !_;
3330
4043
  c === void 0 && g(e), s?.(e);
3331
4044
  };
3332
4045
  return /* @__PURE__ */ n("section", {
3333
- ...p,
3334
- className: mn("game-ui-collapsible", i),
4046
+ ...f,
4047
+ className: mr("game-ui-collapsible", i),
3335
4048
  "data-open": _,
3336
- "data-panel-tone": f,
4049
+ "data-panel-tone": d,
3337
4050
  children: [/* @__PURE__ */ n("header", {
3338
4051
  className: "game-ui-collapsible-header",
3339
4052
  children: [/* @__PURE__ */ t("h3", {
3340
4053
  className: "game-ui-collapsible-heading",
3341
4054
  children: /* @__PURE__ */ n("button", {
3342
- "aria-controls": m,
4055
+ "aria-controls": p,
3343
4056
  "aria-expanded": _,
3344
4057
  className: "game-ui-collapsible-toggle",
3345
4058
  onClick: y,
@@ -3350,7 +4063,7 @@ function gn({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
3350
4063
  className: "game-ui-collapsible-chevron"
3351
4064
  }), /* @__PURE__ */ t("span", {
3352
4065
  className: "game-ui-collapsible-title",
3353
- children: u
4066
+ children: l
3354
4067
  })]
3355
4068
  })
3356
4069
  }), e ? /* @__PURE__ */ t("span", {
@@ -3359,7 +4072,7 @@ function gn({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
3359
4072
  }) : null]
3360
4073
  }), /* @__PURE__ */ t("div", {
3361
4074
  className: "game-ui-collapsible-region",
3362
- id: m,
4075
+ id: p,
3363
4076
  children: /* @__PURE__ */ t("div", {
3364
4077
  className: "game-ui-collapsible-clip",
3365
4078
  children: /* @__PURE__ */ t("div", {
@@ -3370,13 +4083,13 @@ function gn({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
3370
4083
  })]
3371
4084
  });
3372
4085
  }
3373
- var _n = {
4086
+ var _r = {
3374
4087
  close: "Close",
3375
4088
  maximize: "Maximize",
3376
4089
  minimize: "Minimize",
3377
4090
  restore: "Restore"
3378
4091
  };
3379
- function vn({ kind: e }) {
4092
+ function vr({ kind: e }) {
3380
4093
  return /* @__PURE__ */ t("svg", {
3381
4094
  "aria-hidden": "true",
3382
4095
  fill: "none",
@@ -3396,17 +4109,17 @@ function vn({ kind: e }) {
3396
4109
  })
3397
4110
  });
3398
4111
  }
3399
- function yn({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, className: a, defaultState: o = "normal", footer: s, icon: c, labels: l, onClose: u, onStateChange: f, state: p, title: m, ...h }) {
3400
- let [g, _] = d(o), v = p ?? g, y = {
3401
- ..._n,
4112
+ function yr({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, className: a, defaultState: o = "normal", footer: s, icon: c, labels: l, onClose: u, onStateChange: d, state: f, title: p, ...h }) {
4113
+ let [g, _] = m(o), v = f ?? g, y = {
4114
+ ..._r,
3402
4115
  ...l
3403
4116
  }, b = (e) => {
3404
- p === void 0 && _(e), f?.(e);
4117
+ f === void 0 && _(e), d?.(e);
3405
4118
  }, x = v === "minimized", S = v === "maximized";
3406
4119
  return /* @__PURE__ */ n("section", {
3407
4120
  ...h,
3408
- "aria-label": m,
3409
- className: mn("game-ui-window", a),
4121
+ "aria-label": p,
4122
+ className: mr("game-ui-window", a),
3410
4123
  "data-window-state": v,
3411
4124
  role: "group",
3412
4125
  children: [/* @__PURE__ */ n("header", {
@@ -3419,7 +4132,7 @@ function yn({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
3419
4132
  }) : null,
3420
4133
  /* @__PURE__ */ t("h3", {
3421
4134
  className: "game-ui-window-title",
3422
- children: m
4135
+ children: p
3423
4136
  }),
3424
4137
  /* @__PURE__ */ n("span", {
3425
4138
  className: "game-ui-window-actions",
@@ -3429,21 +4142,21 @@ function yn({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
3429
4142
  className: "game-ui-icon-button game-ui-window-button",
3430
4143
  onClick: () => b(x ? "normal" : "minimized"),
3431
4144
  type: "button",
3432
- children: /* @__PURE__ */ t(vn, { kind: x ? "restore" : "minimize" })
4145
+ children: /* @__PURE__ */ t(vr, { kind: x ? "restore" : "minimize" })
3433
4146
  }) : null,
3434
4147
  e ? /* @__PURE__ */ t("button", {
3435
4148
  "aria-label": S ? y.restore : y.maximize,
3436
4149
  className: "game-ui-icon-button game-ui-window-button",
3437
4150
  onClick: () => b(S ? "normal" : "maximized"),
3438
4151
  type: "button",
3439
- children: /* @__PURE__ */ t(vn, { kind: S ? "restore" : "maximize" })
4152
+ children: /* @__PURE__ */ t(vr, { kind: S ? "restore" : "maximize" })
3440
4153
  }) : null,
3441
4154
  u ? /* @__PURE__ */ t("button", {
3442
4155
  "aria-label": y.close,
3443
4156
  className: "game-ui-icon-button game-ui-window-button",
3444
4157
  onClick: u,
3445
4158
  type: "button",
3446
- children: /* @__PURE__ */ t(vn, { kind: "close" })
4159
+ children: /* @__PURE__ */ t(vr, { kind: "close" })
3447
4160
  }) : null
3448
4161
  ]
3449
4162
  })
@@ -3463,16 +4176,16 @@ function yn({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
3463
4176
  })]
3464
4177
  });
3465
4178
  }
3466
- function bn({ children: e, className: r, closeLabel: i = "Close", closeOnBackdrop: a = !0, footer: o, onClose: s, open: d, position: f = "center", size: p = "md", title: m }) {
3467
- let h = u(null), g = l();
3468
- return c(() => {
4179
+ function br({ children: e, className: r, closeLabel: i = "Close", closeOnBackdrop: a = !0, footer: o, onClose: s, open: c, position: d = "center", size: f = "md", title: m }) {
4180
+ let h = p(null), g = u();
4181
+ return l(() => {
3469
4182
  let e = h.current;
3470
- e && (d && !e.open && e.showModal(), !d && e.open && e.close());
3471
- }, [d]), /* @__PURE__ */ t("dialog", {
4183
+ e && (c && !e.open && e.showModal(), !c && e.open && e.close());
4184
+ }, [c]), /* @__PURE__ */ t("dialog", {
3472
4185
  "aria-labelledby": g,
3473
- className: mn("game-ui-modal", r),
3474
- "data-position": f,
3475
- "data-size": p,
4186
+ className: mr("game-ui-modal", r),
4187
+ "data-position": d,
4188
+ "data-size": f,
3476
4189
  onCancel: (e) => {
3477
4190
  e.preventDefault(), s();
3478
4191
  },
@@ -3494,12 +4207,12 @@ function bn({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
3494
4207
  className: "game-ui-icon-button game-ui-window-button",
3495
4208
  onClick: s,
3496
4209
  type: "button",
3497
- children: /* @__PURE__ */ t(vn, { kind: "close" })
4210
+ children: /* @__PURE__ */ t(vr, { kind: "close" })
3498
4211
  })]
3499
4212
  }),
3500
4213
  /* @__PURE__ */ t("div", {
3501
4214
  className: "game-ui-modal-body",
3502
- children: d ? e : null
4215
+ children: c ? e : null
3503
4216
  }),
3504
4217
  o ? /* @__PURE__ */ t("footer", {
3505
4218
  className: "game-ui-modal-footer",
@@ -3511,7 +4224,7 @@ function bn({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
3511
4224
  }
3512
4225
  //#endregion
3513
4226
  //#region src/previewStates.ts
3514
- var xn = [
4227
+ var xr = [
3515
4228
  {
3516
4229
  id: "history-human-long",
3517
4230
  kind: "human",
@@ -3533,22 +4246,22 @@ var xn = [
3533
4246
  speaker: "Table",
3534
4247
  text: "Three votes are locked. One more read can still change the pact."
3535
4248
  }
3536
- ], Sn = {
3537
- ...G,
3538
- ...K,
3539
- ...Se,
3540
- ...Ce,
3541
- ...we,
3542
- ...q,
3543
- ...J,
3544
- ...Ee
4249
+ ], Sr = {
4250
+ ...vt,
4251
+ ...yt,
4252
+ ...bt,
4253
+ ...xt,
4254
+ ...St,
4255
+ ...Ct,
4256
+ ...wt,
4257
+ ...Et
3545
4258
  }, Q = {
3546
4259
  toneAttr: "data-game-ui-tone",
3547
4260
  toneGlass: "glass",
3548
4261
  densityAttr: "data-game-ui-density",
3549
4262
  densityCompact: "compact",
3550
4263
  scopeClass: "game-ui-overlay-scope"
3551
- }, Cn = Te, wn = /* @__PURE__ */ "--game-ui-bg.--game-ui-surface.--game-ui-surface-raised.--game-ui-panel.--game-ui-panel-strong.--game-ui-panel-deep.--game-ui-text.--game-ui-text-muted.--game-ui-accent.--game-ui-accent-bright.--game-ui-secondary.--game-ui-success.--game-ui-success-bright.--game-ui-danger.--game-ui-danger-bright.--game-ui-warning.--game-ui-focus-ring.--game-ui-border-subtle.--game-ui-border-strong.--game-ui-disabled.--game-ui-ink-deep.--game-ui-border-ink.--game-ui-wood.--game-ui-ink-title.--game-ui-ink-heading.--game-ui-liquid-metal-face.--game-ui-liquid-metal-ink".split("."), Tn = {
4264
+ }, Cr = Tt, wr = /* @__PURE__ */ "--game-ui-bg.--game-ui-surface.--game-ui-surface-raised.--game-ui-panel.--game-ui-panel-strong.--game-ui-panel-deep.--game-ui-text.--game-ui-text-muted.--game-ui-accent.--game-ui-accent-bright.--game-ui-secondary.--game-ui-success.--game-ui-success-bright.--game-ui-danger.--game-ui-danger-bright.--game-ui-warning.--game-ui-focus-ring.--game-ui-border-subtle.--game-ui-border-strong.--game-ui-disabled.--game-ui-ink-deep.--game-ui-border-ink.--game-ui-wood.--game-ui-ink-title.--game-ui-ink-heading.--game-ui-liquid-metal-face.--game-ui-liquid-metal-ink".split("."), Tr = {
3552
4265
  en: {
3553
4266
  triggerLabel: "EN",
3554
4267
  langMenuLabel: "Preview language",
@@ -3749,7 +4462,7 @@ var xn = [
3749
4462
  hint: "Rotate manually if this browser blocks automatic landscape lock."
3750
4463
  },
3751
4464
  historyLabel: "Round history",
3752
- history: xn
4465
+ history: xr
3753
4466
  },
3754
4467
  "zh-CN": {
3755
4468
  triggerLabel: "中",
@@ -3975,57 +4688,57 @@ var xn = [
3975
4688
  }
3976
4689
  ]
3977
4690
  }
3978
- }, En = i(Tn.en), $ = () => s(En), Dn = [
4691
+ }, Er = i(Tr.en), $ = () => c(Er), Dr = [
3979
4692
  {
3980
4693
  id: "colors",
3981
- tokens: W
4694
+ tokens: J
3982
4695
  },
3983
4696
  {
3984
4697
  id: "semantic",
3985
- tokens: G
4698
+ tokens: vt
3986
4699
  },
3987
4700
  {
3988
4701
  id: "typography",
3989
- tokens: K
4702
+ tokens: yt
3990
4703
  },
3991
4704
  {
3992
4705
  id: "spacing",
3993
- tokens: Se
4706
+ tokens: bt
3994
4707
  },
3995
4708
  {
3996
4709
  id: "radius",
3997
- tokens: Ce
4710
+ tokens: xt
3998
4711
  },
3999
4712
  {
4000
4713
  id: "elevation",
4001
- tokens: we
4714
+ tokens: St
4002
4715
  },
4003
4716
  {
4004
4717
  id: "motion",
4005
- tokens: q
4718
+ tokens: Ct
4006
4719
  },
4007
4720
  {
4008
4721
  id: "overlayGlass",
4009
- tokens: xe
4722
+ tokens: _t
4010
4723
  },
4011
4724
  {
4012
4725
  id: "liquidMetal",
4013
- tokens: be
4726
+ tokens: gt
4014
4727
  },
4015
4728
  {
4016
4729
  id: "layers",
4017
- tokens: J
4730
+ tokens: wt
4018
4731
  },
4019
4732
  {
4020
4733
  id: "targets",
4021
- tokens: Te
4734
+ tokens: Tt
4022
4735
  },
4023
4736
  {
4024
4737
  id: "assetSizing",
4025
- tokens: Ee
4738
+ tokens: Et
4026
4739
  }
4027
4740
  ];
4028
- function On({ id: e, label: r, tokens: i }) {
4741
+ function Or({ id: e, label: r, tokens: i }) {
4029
4742
  return /* @__PURE__ */ n("article", {
4030
4743
  className: "game-ui-token-card",
4031
4744
  children: [/* @__PURE__ */ t("h3", { children: r }), /* @__PURE__ */ t("div", {
@@ -4037,17 +4750,17 @@ function On({ id: e, label: r, tokens: i }) {
4037
4750
  })]
4038
4751
  });
4039
4752
  }
4040
- function kn() {
4753
+ function kr() {
4041
4754
  return /* @__PURE__ */ t("div", {
4042
4755
  "aria-label": "Clay color swatches",
4043
4756
  className: "game-ui-swatch-grid",
4044
- children: Object.entries(W).map(([e, r]) => /* @__PURE__ */ n("figure", {
4757
+ children: Object.entries(J).map(([e, r]) => /* @__PURE__ */ n("figure", {
4045
4758
  className: "game-ui-swatch",
4046
4759
  children: [/* @__PURE__ */ t("span", { style: { background: r } }), /* @__PURE__ */ n("figcaption", { children: [/* @__PURE__ */ t("strong", { children: e }), /* @__PURE__ */ t("code", { children: r })] })]
4047
4760
  }, e))
4048
4761
  });
4049
4762
  }
4050
- function An() {
4763
+ function Ar() {
4051
4764
  let { type: e } = $();
4052
4765
  return /* @__PURE__ */ n("div", {
4053
4766
  className: "game-ui-type-scale",
@@ -4063,36 +4776,36 @@ function An() {
4063
4776
  ]
4064
4777
  });
4065
4778
  }
4066
- function jn() {
4779
+ function jr() {
4067
4780
  let { buttons: e } = $();
4068
- return /* @__PURE__ */ n(F, {
4781
+ return /* @__PURE__ */ n(q, {
4069
4782
  title: e.panelTitle,
4070
4783
  tone: "strong",
4071
4784
  children: [
4072
4785
  /* @__PURE__ */ n("div", {
4073
4786
  className: "game-ui-component-row",
4074
4787
  children: [
4075
- /* @__PURE__ */ t(b, {
4788
+ /* @__PURE__ */ t(w, {
4076
4789
  variant: "primary",
4077
4790
  children: e.openTable
4078
4791
  }),
4079
- /* @__PURE__ */ t(b, {
4792
+ /* @__PURE__ */ t(w, {
4080
4793
  variant: "secondary",
4081
4794
  children: e.useCode
4082
4795
  }),
4083
- /* @__PURE__ */ t(b, {
4796
+ /* @__PURE__ */ t(w, {
4084
4797
  variant: "ghost",
4085
4798
  children: e.continueHost
4086
4799
  }),
4087
- /* @__PURE__ */ t(b, {
4800
+ /* @__PURE__ */ t(w, {
4088
4801
  variant: "success",
4089
4802
  children: e.readyUp
4090
4803
  }),
4091
- /* @__PURE__ */ t(b, {
4804
+ /* @__PURE__ */ t(w, {
4092
4805
  variant: "danger",
4093
4806
  children: e.leaveTable
4094
4807
  }),
4095
- /* @__PURE__ */ t(b, {
4808
+ /* @__PURE__ */ t(w, {
4096
4809
  disabled: !0,
4097
4810
  variant: "secondary",
4098
4811
  children: e.waiting
@@ -4102,9 +4815,9 @@ function jn() {
4102
4815
  /* @__PURE__ */ n("div", {
4103
4816
  className: "game-ui-component-row",
4104
4817
  children: [
4105
- /* @__PURE__ */ t(ye, {
4818
+ /* @__PURE__ */ t(ct, {
4106
4819
  label: e.settingsTip,
4107
- children: /* @__PURE__ */ t(I, {
4820
+ children: /* @__PURE__ */ t(st, {
4108
4821
  label: e.settingsTip,
4109
4822
  children: /* @__PURE__ */ t(Z, {
4110
4823
  icon: "settings",
@@ -4112,7 +4825,7 @@ function jn() {
4112
4825
  })
4113
4826
  })
4114
4827
  }),
4115
- /* @__PURE__ */ t(I, {
4828
+ /* @__PURE__ */ t(st, {
4116
4829
  label: e.copyInvite,
4117
4830
  children: /* @__PURE__ */ t(Z, {
4118
4831
  icon: "copy",
@@ -4133,7 +4846,7 @@ function jn() {
4133
4846
  })
4134
4847
  ]
4135
4848
  }),
4136
- /* @__PURE__ */ t(R, {
4849
+ /* @__PURE__ */ t(ut, {
4137
4850
  activeId: "live",
4138
4851
  label: e.segmentedLabel,
4139
4852
  options: [
@@ -4151,7 +4864,7 @@ function jn() {
4151
4864
  }
4152
4865
  ]
4153
4866
  }),
4154
- /* @__PURE__ */ t(L, {
4867
+ /* @__PURE__ */ t(lt, {
4155
4868
  activeId: "portal",
4156
4869
  tabs: [
4157
4870
  {
@@ -4168,7 +4881,7 @@ function jn() {
4168
4881
  }
4169
4882
  ]
4170
4883
  }),
4171
- /* @__PURE__ */ t(V, {
4884
+ /* @__PURE__ */ t(pt, {
4172
4885
  items: [
4173
4886
  {
4174
4887
  id: "wave",
@@ -4185,20 +4898,20 @@ function jn() {
4185
4898
  ],
4186
4899
  label: e.radialLabel
4187
4900
  }),
4188
- /* @__PURE__ */ t(z, {
4901
+ /* @__PURE__ */ t(dt, {
4189
4902
  label: e.sliderLabel,
4190
4903
  max: 100,
4191
4904
  min: 0,
4192
4905
  value: 68
4193
4906
  }),
4194
- /* @__PURE__ */ t(B, {
4907
+ /* @__PURE__ */ t(ft, {
4195
4908
  checked: !0,
4196
4909
  label: e.toggleLabel
4197
4910
  })
4198
4911
  ]
4199
4912
  });
4200
4913
  }
4201
- function Mn() {
4914
+ function Mr() {
4202
4915
  let { hud: e, tiles: r } = $();
4203
4916
  return /* @__PURE__ */ n("div", {
4204
4917
  className: "game-ui-stage-demo",
@@ -4206,7 +4919,7 @@ function Mn() {
4206
4919
  "aria-label": "Clay world HUD preview",
4207
4920
  className: "game-ui-stage-world",
4208
4921
  children: [
4209
- /* @__PURE__ */ t(Ze, {
4922
+ /* @__PURE__ */ t(Zt, {
4210
4923
  label: e.label,
4211
4924
  items: [
4212
4925
  {
@@ -4229,15 +4942,15 @@ function Mn() {
4229
4942
  value: "02:46"
4230
4943
  }
4231
4944
  ],
4232
- actions: /* @__PURE__ */ n(P, {
4945
+ actions: /* @__PURE__ */ n(ot, {
4233
4946
  label: e.tools,
4234
- children: [/* @__PURE__ */ t(I, {
4947
+ children: [/* @__PURE__ */ t(st, {
4235
4948
  label: e.history,
4236
4949
  children: /* @__PURE__ */ t(Z, {
4237
4950
  icon: "scroll",
4238
4951
  size: "sm"
4239
4952
  })
4240
- }), /* @__PURE__ */ t(I, {
4953
+ }), /* @__PURE__ */ t(st, {
4241
4954
  label: e.settings,
4242
4955
  children: /* @__PURE__ */ t(Z, {
4243
4956
  icon: "settings",
@@ -4265,10 +4978,10 @@ function Mn() {
4265
4978
  }),
4266
4979
  /* @__PURE__ */ n("div", {
4267
4980
  className: "game-ui-input-strip",
4268
- children: [/* @__PURE__ */ t(b, {
4981
+ children: [/* @__PURE__ */ t(w, {
4269
4982
  variant: "secondary",
4270
4983
  children: e.emote
4271
- }), /* @__PURE__ */ t(b, {
4984
+ }), /* @__PURE__ */ t(w, {
4272
4985
  variant: "primary",
4273
4986
  children: e.sendRead
4274
4987
  })]
@@ -4277,7 +4990,7 @@ function Mn() {
4277
4990
  }), /* @__PURE__ */ n("div", {
4278
4991
  className: "game-ui-stage-sidecar",
4279
4992
  children: [
4280
- /* @__PURE__ */ t($e, {
4993
+ /* @__PURE__ */ t($t, {
4281
4994
  badge: r.daily.badge,
4282
4995
  icon: "scroll",
4283
4996
  kicker: r.daily.kicker,
@@ -4286,7 +4999,7 @@ function Mn() {
4286
4999
  title: r.daily.title,
4287
5000
  tone: "daily"
4288
5001
  }),
4289
- /* @__PURE__ */ t($e, {
5002
+ /* @__PURE__ */ t($t, {
4290
5003
  badge: r.portal.badge,
4291
5004
  icon: "portal",
4292
5005
  kicker: r.portal.kicker,
@@ -4294,7 +5007,7 @@ function Mn() {
4294
5007
  title: r.portal.title,
4295
5008
  tone: "portal"
4296
5009
  }),
4297
- /* @__PURE__ */ t($e, {
5010
+ /* @__PURE__ */ t($t, {
4298
5011
  icon: "energy",
4299
5012
  kicker: r.host.kicker,
4300
5013
  summary: r.host.summary,
@@ -4305,7 +5018,7 @@ function Mn() {
4305
5018
  })]
4306
5019
  });
4307
5020
  }
4308
- function Nn() {
5021
+ function Nr() {
4309
5022
  let { hud: e, buttons: r } = $(), i = (i) => {
4310
5023
  let a = i === "glass";
4311
5024
  return /* @__PURE__ */ n("div", {
@@ -4319,7 +5032,7 @@ function Nn() {
4319
5032
  [Q.toneAttr]: Q.toneGlass,
4320
5033
  [Q.densityAttr]: Q.densityCompact
4321
5034
  } : {},
4322
- children: [/* @__PURE__ */ t(Ze, {
5035
+ children: [/* @__PURE__ */ t(Zt, {
4323
5036
  label: e.label,
4324
5037
  items: [
4325
5038
  {
@@ -4342,15 +5055,15 @@ function Nn() {
4342
5055
  value: "02:46"
4343
5056
  }
4344
5057
  ],
4345
- actions: /* @__PURE__ */ n(P, {
5058
+ actions: /* @__PURE__ */ n(ot, {
4346
5059
  label: e.tools,
4347
- children: [/* @__PURE__ */ t(I, {
5060
+ children: [/* @__PURE__ */ t(st, {
4348
5061
  label: e.history,
4349
5062
  children: /* @__PURE__ */ t(Z, {
4350
5063
  icon: "scroll",
4351
5064
  size: "sm"
4352
5065
  })
4353
- }), /* @__PURE__ */ t(I, {
5066
+ }), /* @__PURE__ */ t(st, {
4354
5067
  label: e.settings,
4355
5068
  children: /* @__PURE__ */ t(Z, {
4356
5069
  icon: "settings",
@@ -4358,7 +5071,7 @@ function Nn() {
4358
5071
  })
4359
5072
  })]
4360
5073
  })
4361
- }), /* @__PURE__ */ n(F, {
5074
+ }), /* @__PURE__ */ n(q, {
4362
5075
  title: r.panelTitle,
4363
5076
  children: [/* @__PURE__ */ n("div", {
4364
5077
  className: "game-ui-hud-cluster",
@@ -4371,7 +5084,7 @@ function Nn() {
4371
5084
  tone: "success",
4372
5085
  children: r.readyBadge
4373
5086
  }),
4374
- /* @__PURE__ */ t(mt, {
5087
+ /* @__PURE__ */ t(hn, {
4375
5088
  label: e.reveal,
4376
5089
  value: 68
4377
5090
  })
@@ -4379,15 +5092,15 @@ function Nn() {
4379
5092
  }), /* @__PURE__ */ n("div", {
4380
5093
  className: "game-ui-input-strip",
4381
5094
  children: [
4382
- /* @__PURE__ */ t(b, {
5095
+ /* @__PURE__ */ t(w, {
4383
5096
  variant: "secondary",
4384
5097
  children: e.emote
4385
5098
  }),
4386
- /* @__PURE__ */ t(b, {
5099
+ /* @__PURE__ */ t(w, {
4387
5100
  variant: "primary",
4388
5101
  children: e.sendRead
4389
5102
  }),
4390
- /* @__PURE__ */ t(b, {
5103
+ /* @__PURE__ */ t(w, {
4391
5104
  variant: "ghost",
4392
5105
  children: r.leaveTable
4393
5106
  })
@@ -4423,26 +5136,26 @@ function Nn() {
4423
5136
  })]
4424
5137
  });
4425
5138
  }
4426
- function Pn() {
5139
+ function Pr() {
4427
5140
  let { liquidMetal: e } = $();
4428
5141
  return /* @__PURE__ */ n("div", {
4429
5142
  className: "game-ui-liquid-metal-compare",
4430
- children: [/* @__PURE__ */ t(F, {
5143
+ children: [/* @__PURE__ */ t(q, {
4431
5144
  title: e.cssTitle,
4432
5145
  tone: "strong",
4433
5146
  children: /* @__PURE__ */ t("div", {
4434
5147
  className: "game-ui-liquid-metal-stage",
4435
- children: /* @__PURE__ */ t(N, {
5148
+ children: /* @__PURE__ */ t(L, {
4436
5149
  renderer: "css",
4437
5150
  children: e.cta
4438
5151
  })
4439
5152
  })
4440
- }), /* @__PURE__ */ t(F, {
5153
+ }), /* @__PURE__ */ t(q, {
4441
5154
  title: e.webglTitle,
4442
5155
  tone: "strong",
4443
5156
  children: /* @__PURE__ */ t("div", {
4444
5157
  className: "game-ui-liquid-metal-stage",
4445
- children: /* @__PURE__ */ t(N, {
5158
+ children: /* @__PURE__ */ t(L, {
4446
5159
  renderer: "webgl",
4447
5160
  children: e.cta
4448
5161
  })
@@ -4450,36 +5163,36 @@ function Pn() {
4450
5163
  })]
4451
5164
  });
4452
5165
  }
4453
- function Fn() {
5166
+ function Fr() {
4454
5167
  let { modals: e } = $();
4455
5168
  return /* @__PURE__ */ n("div", {
4456
5169
  className: "game-ui-preview-two-up",
4457
- children: [/* @__PURE__ */ n(_e, {
5170
+ children: [/* @__PURE__ */ n(it, {
4458
5171
  title: e.dialogTitle,
4459
- children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(P, {
5172
+ children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(ot, {
4460
5173
  label: e.actionsLabel,
4461
- children: [/* @__PURE__ */ t(b, {
5174
+ children: [/* @__PURE__ */ t(w, {
4462
5175
  variant: "primary",
4463
5176
  children: e.confirm
4464
- }), /* @__PURE__ */ t(b, {
5177
+ }), /* @__PURE__ */ t(w, {
4465
5178
  variant: "ghost",
4466
5179
  children: e.back
4467
5180
  })]
4468
5181
  })]
4469
- }), /* @__PURE__ */ n(F, {
5182
+ }), /* @__PURE__ */ n(q, {
4470
5183
  title: e.panelTitle,
4471
5184
  tone: "strong",
4472
5185
  children: [
4473
- /* @__PURE__ */ t(H, {
5186
+ /* @__PURE__ */ t(mt, {
4474
5187
  tone: "success",
4475
5188
  children: e.toastOk
4476
5189
  }),
4477
- /* @__PURE__ */ t(H, {
5190
+ /* @__PURE__ */ t(mt, {
4478
5191
  tone: "danger",
4479
5192
  children: e.toastErr
4480
5193
  }),
4481
- /* @__PURE__ */ t(rt, { label: e.loading }),
4482
- /* @__PURE__ */ t(rt, {
5194
+ /* @__PURE__ */ t(rn, { label: e.loading }),
5195
+ /* @__PURE__ */ t(rn, {
4483
5196
  label: e.loadingErr,
4484
5197
  tone: "error"
4485
5198
  })
@@ -4487,14 +5200,14 @@ function Fn() {
4487
5200
  })]
4488
5201
  });
4489
5202
  }
4490
- function In() {
5203
+ function Ir() {
4491
5204
  let { cards: e } = $();
4492
5205
  return /* @__PURE__ */ n("div", {
4493
5206
  className: "game-ui-preview-two-up",
4494
- children: [/* @__PURE__ */ t(F, {
5207
+ children: [/* @__PURE__ */ t(q, {
4495
5208
  title: e.fanTitle,
4496
5209
  tone: "strong",
4497
- children: /* @__PURE__ */ t(Qe, {
5210
+ children: /* @__PURE__ */ t(Qt, {
4498
5211
  label: e.fanLabel,
4499
5212
  cards: [
4500
5213
  {
@@ -4517,7 +5230,7 @@ function In() {
4517
5230
  }
4518
5231
  ]
4519
5232
  })
4520
- }), /* @__PURE__ */ n(F, {
5233
+ }), /* @__PURE__ */ n(q, {
4521
5234
  title: e.assetTitle,
4522
5235
  tone: "strong",
4523
5236
  children: [/* @__PURE__ */ t("p", {
@@ -4526,16 +5239,16 @@ function In() {
4526
5239
  }), /* @__PURE__ */ n("div", {
4527
5240
  className: "game-ui-asset-path-grid",
4528
5241
  children: [
4529
- /* @__PURE__ */ t("code", { children: Le.catalog.manifest }),
4530
- /* @__PURE__ */ t("code", { children: Le.catalog.sourceCatalog }),
4531
- /* @__PURE__ */ t("code", { children: Le.buttons.primary }),
4532
- /* @__PURE__ */ t("code", { children: Le.icons.trophy })
5242
+ /* @__PURE__ */ t("code", { children: Lt.catalog.manifest }),
5243
+ /* @__PURE__ */ t("code", { children: Lt.catalog.sourceCatalog }),
5244
+ /* @__PURE__ */ t("code", { children: Lt.buttons.primary }),
5245
+ /* @__PURE__ */ t("code", { children: Lt.icons.trophy })
4533
5246
  ]
4534
5247
  })]
4535
5248
  })]
4536
5249
  });
4537
5250
  }
4538
- var Ln = [
5251
+ var Lr = [
4539
5252
  {
4540
5253
  id: "terrain",
4541
5254
  label: "Terrain",
@@ -4551,7 +5264,7 @@ var Ln = [
4551
5264
  label: "Place",
4552
5265
  icon: "gem"
4553
5266
  }
4554
- ], Rn = [
5267
+ ], Rr = [
4555
5268
  {
4556
5269
  id: "raise",
4557
5270
  label: "Raise",
@@ -4577,7 +5290,7 @@ var Ln = [
4577
5290
  label: "Paint",
4578
5291
  shortcut: "5"
4579
5292
  }
4580
- ], zn = [
5293
+ ], zr = [
4581
5294
  {
4582
5295
  id: "grass",
4583
5296
  label: "Grass",
@@ -4593,7 +5306,7 @@ var Ln = [
4593
5306
  label: "Path",
4594
5307
  color: "#b98d5d"
4595
5308
  }
4596
- ], Bn = [{
5309
+ ], Br = [{
4597
5310
  id: "foundation",
4598
5311
  label: "Foundation",
4599
5312
  icon: "home",
@@ -4612,10 +5325,10 @@ var Ln = [
4612
5325
  status: "ready"
4613
5326
  }]
4614
5327
  }];
4615
- function Vn() {
5328
+ function Vr() {
4616
5329
  return /* @__PURE__ */ n("div", {
4617
5330
  className: "game-ui-preview-two-up",
4618
- children: [/* @__PURE__ */ t(Kt, {
5331
+ children: [/* @__PURE__ */ t(qn, {
4619
5332
  activeBuildCategoryId: "foundation",
4620
5333
  activeMaterialId: "grass",
4621
5334
  activeModeId: "terrain",
@@ -4624,10 +5337,10 @@ function Vn() {
4624
5337
  radius: 2.75,
4625
5338
  strength: .45
4626
5339
  },
4627
- buildCategories: Bn,
5340
+ buildCategories: Br,
4628
5341
  label: "Desktop terrain and build tools",
4629
- materials: zn,
4630
- modes: Ln,
5342
+ materials: zr,
5343
+ modes: Lr,
4631
5344
  selectedBuildItemId: "floor-2x2",
4632
5345
  status: {
4633
5346
  label: "Ready",
@@ -4638,12 +5351,12 @@ function Vn() {
4638
5351
  progressValue: 68
4639
5352
  },
4640
5353
  title: "Island tools",
4641
- tools: Rn,
5354
+ tools: Rr,
4642
5355
  undoRedo: {
4643
5356
  canRedo: !1,
4644
5357
  canUndo: !0
4645
5358
  }
4646
- }), /* @__PURE__ */ t(Kt, {
5359
+ }), /* @__PURE__ */ t(qn, {
4647
5360
  activeBuildCategoryId: "foundation",
4648
5361
  activeMaterialId: "path",
4649
5362
  activeModeId: "terrain",
@@ -4652,11 +5365,11 @@ function Vn() {
4652
5365
  radius: 1.5,
4653
5366
  strength: .3
4654
5367
  },
4655
- buildCategories: Bn,
5368
+ buildCategories: Br,
4656
5369
  drawerOpen: !0,
4657
5370
  label: "Small mobile terrain drawer",
4658
- materials: zn,
4659
- modes: Ln,
5371
+ materials: zr,
5372
+ modes: Lr,
4660
5373
  selectedBuildItemId: "floor-2x2",
4661
5374
  status: {
4662
5375
  label: "Blocked",
@@ -4664,7 +5377,7 @@ function Vn() {
4664
5377
  description: "This edit would bury a placed object."
4665
5378
  },
4666
5379
  title: "Tools",
4667
- tools: Rn,
5380
+ tools: Rr,
4668
5381
  undoRedo: {
4669
5382
  canRedo: !0,
4670
5383
  canUndo: !0
@@ -4673,7 +5386,7 @@ function Vn() {
4673
5386
  })]
4674
5387
  });
4675
5388
  }
4676
- function Hn({ label: e, mode: r }) {
5389
+ function Hr({ label: e, mode: r }) {
4677
5390
  return /* @__PURE__ */ n("div", {
4678
5391
  className: "game-ui-construction-preview-card",
4679
5392
  "data-preview": r,
@@ -4687,7 +5400,7 @@ function Hn({ label: e, mode: r }) {
4687
5400
  ]
4688
5401
  });
4689
5402
  }
4690
- var Un = [
5403
+ var Ur = [
4691
5404
  {
4692
5405
  id: "preview-deck",
4693
5406
  title: "Deck robot crew",
@@ -4748,7 +5461,7 @@ var Un = [
4748
5461
  before: {
4749
5462
  label: "Before",
4750
5463
  caption: "Uneven terrain pad.",
4751
- content: /* @__PURE__ */ t(Hn, {
5464
+ content: /* @__PURE__ */ t(Hr, {
4752
5465
  label: "Rough pad",
4753
5466
  mode: "before"
4754
5467
  })
@@ -4756,7 +5469,7 @@ var Un = [
4756
5469
  after: {
4757
5470
  label: "After",
4758
5471
  caption: "Flattened foundation pad with safe clearance.",
4759
- content: /* @__PURE__ */ t(Hn, {
5472
+ content: /* @__PURE__ */ t(Hr, {
4760
5473
  label: "Foundation ready",
4761
5474
  mode: "after"
4762
5475
  })
@@ -4785,19 +5498,19 @@ var Un = [
4785
5498
  }]
4786
5499
  }
4787
5500
  ];
4788
- function Wn() {
5501
+ function Wr() {
4789
5502
  return /* @__PURE__ */ n("div", {
4790
5503
  className: "game-ui-preview-two-up",
4791
- children: [/* @__PURE__ */ t(pn, {
4792
- jobs: Un,
5504
+ children: [/* @__PURE__ */ t(pr, {
5505
+ jobs: Ur,
4793
5506
  label: "AI contractor jobs",
4794
5507
  selectedJobId: "review-house-pad",
4795
5508
  subtitle: "Official contractor UI covers drafts, previews, robot work, validation, review, and local-only provider boundaries.",
4796
5509
  title: "AI contractor",
4797
5510
  variant: "desktop"
4798
- }), /* @__PURE__ */ t(pn, {
5511
+ }), /* @__PURE__ */ t(pr, {
4799
5512
  drawerOpen: !0,
4800
- jobs: Un,
5513
+ jobs: Ur,
4801
5514
  label: "Small mobile contractor jobs",
4802
5515
  selectedJobId: "blocked-fence",
4803
5516
  title: "Contractor",
@@ -4805,10 +5518,10 @@ function Wn() {
4805
5518
  })]
4806
5519
  });
4807
5520
  }
4808
- function Gn() {
4809
- return /* @__PURE__ */ t(gt, {
5521
+ function Gr() {
5522
+ return /* @__PURE__ */ t(_n, {
4810
5523
  title: "OwnMySpace island editor preview",
4811
- hud: /* @__PURE__ */ t(vt, {
5524
+ hud: /* @__PURE__ */ t(yn, {
4812
5525
  label: "Island facts",
4813
5526
  facts: [
4814
5527
  {
@@ -4832,11 +5545,11 @@ function Gn() {
4832
5545
  }
4833
5546
  ]
4834
5547
  }),
4835
- movementPad: /* @__PURE__ */ t(Ct, {
5548
+ movementPad: /* @__PURE__ */ t(wn, {
4836
5549
  helpText: "WASD or arrows",
4837
5550
  label: "Move avatar"
4838
5551
  }),
4839
- assetLibrary: /* @__PURE__ */ t(Ot, {
5552
+ assetLibrary: /* @__PURE__ */ t(kn, {
4840
5553
  label: "Placeable assets",
4841
5554
  title: "Assets",
4842
5555
  subtitle: "Starter, generated, and imported assets stay visibly distinct but share one placement path.",
@@ -4883,7 +5596,7 @@ function Gn() {
4883
5596
  }
4884
5597
  ]
4885
5598
  }),
4886
- bottomBar: /* @__PURE__ */ t(kt, {
5599
+ bottomBar: /* @__PURE__ */ t(An, {
4887
5600
  title: "Placement",
4888
5601
  selectedTitle: "Manual chair",
4889
5602
  placedObjects: 3,
@@ -4919,7 +5632,7 @@ function Gn() {
4919
5632
  })
4920
5633
  });
4921
5634
  }
4922
- var Kn = [{
5635
+ var Kr = [{
4923
5636
  id: "starter",
4924
5637
  label: "Starter pieces",
4925
5638
  source: "starter",
@@ -4950,7 +5663,7 @@ var Kn = [{
4950
5663
  }
4951
5664
  ]
4952
5665
  }];
4953
- function qn() {
5666
+ function qr() {
4954
5667
  return /* @__PURE__ */ t("div", {
4955
5668
  className: "game-ui-asset-compression-repro",
4956
5669
  "aria-label": "Asset card compression repro",
@@ -4974,9 +5687,9 @@ function qn() {
4974
5687
  className: "game-ui-asset-compression-repro-surface",
4975
5688
  "data-repro-surface": e.id,
4976
5689
  style: { "--repro-width": e.width },
4977
- children: [/* @__PURE__ */ t(X, { children: e.label }), /* @__PURE__ */ t(Ot, {
5690
+ children: [/* @__PURE__ */ t(X, { children: e.label }), /* @__PURE__ */ t(kn, {
4978
5691
  density: "dense",
4979
- groups: Kn,
5692
+ groups: Kr,
4980
5693
  label: `${e.label} assets`,
4981
5694
  selectedAssetId: "asset-repro-chair",
4982
5695
  title: "Build"
@@ -4984,13 +5697,13 @@ function qn() {
4984
5697
  }, e.id))
4985
5698
  });
4986
5699
  }
4987
- function Jn() {
5700
+ function Jr() {
4988
5701
  let { firstSession: e } = $();
4989
5702
  return /* @__PURE__ */ n("div", {
4990
5703
  className: "game-ui-first-session-preview",
4991
5704
  children: [/* @__PURE__ */ t("div", {
4992
5705
  className: "game-ui-first-session-world",
4993
- children: /* @__PURE__ */ t(ot, {
5706
+ children: /* @__PURE__ */ t(sn, {
4994
5707
  authenticated: !0,
4995
5708
  batteryCount: 5,
4996
5709
  dailyStreak: 3,
@@ -5024,7 +5737,7 @@ function Jn() {
5024
5737
  })
5025
5738
  }), /* @__PURE__ */ t("div", {
5026
5739
  className: "game-ui-first-session-modal-slot",
5027
- children: /* @__PURE__ */ t(st, {
5740
+ children: /* @__PURE__ */ t(cn, {
5028
5741
  open: !0,
5029
5742
  onDismiss: () => void 0,
5030
5743
  labels: {
@@ -5052,90 +5765,90 @@ function Jn() {
5052
5765
  })]
5053
5766
  });
5054
5767
  }
5055
- function Yn() {
5768
+ function Yr() {
5056
5769
  let { responsive: e } = $();
5057
5770
  return /* @__PURE__ */ n("div", {
5058
5771
  className: "game-ui-proof-frames",
5059
5772
  children: [/* @__PURE__ */ n("article", {
5060
5773
  className: "game-ui-proof-frame is-desktop",
5061
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(X, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(Mn, {})]
5774
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(X, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(Mr, {})]
5062
5775
  }), /* @__PURE__ */ n("article", {
5063
5776
  className: "game-ui-proof-frame is-mobile-landscape",
5064
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(X, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(Mn, {})]
5777
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(X, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(Mr, {})]
5065
5778
  })]
5066
5779
  });
5067
5780
  }
5068
- function Xn() {
5781
+ function Xr() {
5069
5782
  let { forms: e } = $();
5070
5783
  return /* @__PURE__ */ n("div", {
5071
5784
  className: "game-ui-preview-two-up",
5072
- children: [/* @__PURE__ */ n(F, {
5785
+ children: [/* @__PURE__ */ n(q, {
5073
5786
  title: e.formsTitle,
5074
5787
  tone: "strong",
5075
5788
  children: [
5076
- /* @__PURE__ */ t(ut, {
5789
+ /* @__PURE__ */ t(dn, {
5077
5790
  hint: e.roomCodeHint,
5078
5791
  label: e.roomCodeLabel,
5079
- children: /* @__PURE__ */ t(ct, { placeholder: e.roomCodePlaceholder })
5792
+ children: /* @__PURE__ */ t(ln, { placeholder: e.roomCodePlaceholder })
5080
5793
  }),
5081
- /* @__PURE__ */ t(ut, {
5794
+ /* @__PURE__ */ t(dn, {
5082
5795
  label: e.nameLabel,
5083
5796
  required: !0,
5084
- children: /* @__PURE__ */ t(ct, { placeholder: e.namePlaceholder })
5797
+ children: /* @__PURE__ */ t(ln, { placeholder: e.namePlaceholder })
5085
5798
  }),
5086
- /* @__PURE__ */ t(ut, {
5799
+ /* @__PURE__ */ t(dn, {
5087
5800
  error: e.readError,
5088
5801
  label: e.readLabel,
5089
- children: /* @__PURE__ */ t(lt, {
5802
+ children: /* @__PURE__ */ t(un, {
5090
5803
  invalid: !0,
5091
5804
  placeholder: e.readPlaceholder
5092
5805
  })
5093
5806
  }),
5094
- /* @__PURE__ */ t(dt, {
5807
+ /* @__PURE__ */ t(fn, {
5095
5808
  defaultChecked: !0,
5096
5809
  label: e.rememberLabel
5097
5810
  })
5098
5811
  ]
5099
- }), /* @__PURE__ */ n(F, {
5812
+ }), /* @__PURE__ */ n(q, {
5100
5813
  title: e.displayTitle,
5101
5814
  tone: "strong",
5102
5815
  children: [
5103
5816
  /* @__PURE__ */ n("div", {
5104
5817
  className: "game-ui-component-row",
5105
5818
  children: [
5106
- /* @__PURE__ */ t(pt, {
5819
+ /* @__PURE__ */ t(mn, {
5107
5820
  name: "Mika Ono",
5108
5821
  status: "online"
5109
5822
  }),
5110
- /* @__PURE__ */ t(pt, {
5823
+ /* @__PURE__ */ t(mn, {
5111
5824
  name: "River",
5112
5825
  size: "lg",
5113
5826
  status: "busy"
5114
5827
  }),
5115
- /* @__PURE__ */ t(pt, {
5828
+ /* @__PURE__ */ t(mn, {
5116
5829
  name: "Noa",
5117
5830
  status: "away"
5118
5831
  }),
5119
- /* @__PURE__ */ t(pt, {
5832
+ /* @__PURE__ */ t(mn, {
5120
5833
  name: e.guestName,
5121
5834
  size: "sm"
5122
5835
  })
5123
5836
  ]
5124
5837
  }),
5125
- /* @__PURE__ */ t(mt, {
5838
+ /* @__PURE__ */ t(hn, {
5126
5839
  label: e.revealLabel,
5127
5840
  showValue: !0,
5128
5841
  value: 64
5129
5842
  }),
5130
- /* @__PURE__ */ t(mt, {
5843
+ /* @__PURE__ */ t(hn, {
5131
5844
  label: e.batteryLabel,
5132
5845
  max: 20,
5133
5846
  showValue: !0,
5134
5847
  tone: "success",
5135
5848
  value: 14
5136
5849
  }),
5137
- /* @__PURE__ */ t(ht, {
5138
- action: /* @__PURE__ */ t(b, {
5850
+ /* @__PURE__ */ t(gn, {
5851
+ action: /* @__PURE__ */ t(w, {
5139
5852
  variant: "primary",
5140
5853
  children: e.emptyCta
5141
5854
  }),
@@ -5147,8 +5860,8 @@ function Xn() {
5147
5860
  })]
5148
5861
  });
5149
5862
  }
5150
- var Zn = Ae.filter((e) => Pe(e).includes("game")), Qn = Ae.filter((e) => Pe(e).includes("line"));
5151
- function $n({ names: e, style: r }) {
5863
+ var Zr = At.filter((e) => Pt(e).includes("game")), Qr = At.filter((e) => Pt(e).includes("line"));
5864
+ function $r({ names: e, style: r }) {
5152
5865
  return /* @__PURE__ */ t("div", {
5153
5866
  className: "game-ui-icon-grid",
5154
5867
  children: e.map((e) => /* @__PURE__ */ n("figure", {
@@ -5161,10 +5874,10 @@ function $n({ names: e, style: r }) {
5161
5874
  }, `${r}-${e}`))
5162
5875
  });
5163
5876
  }
5164
- function er() {
5877
+ function ei() {
5165
5878
  return /* @__PURE__ */ t("div", {
5166
5879
  className: "game-ui-icon-grid",
5167
- children: Ie.map((e) => /* @__PURE__ */ n("figure", {
5880
+ children: It.map((e) => /* @__PURE__ */ n("figure", {
5168
5881
  className: "game-ui-icon-cell",
5169
5882
  children: [/* @__PURE__ */ t("span", {
5170
5883
  className: "game-ui-asset-icon",
@@ -5173,13 +5886,13 @@ function er() {
5173
5886
  "aria-hidden": !0,
5174
5887
  children: /* @__PURE__ */ t("img", {
5175
5888
  alt: "",
5176
- src: Fe[e]
5889
+ src: Ft[e]
5177
5890
  })
5178
5891
  }), /* @__PURE__ */ t("figcaption", { children: e })]
5179
5892
  }, `sprite-${e}`))
5180
5893
  });
5181
5894
  }
5182
- function tr() {
5895
+ function ti() {
5183
5896
  let { gallery: e } = $();
5184
5897
  return /* @__PURE__ */ n("div", {
5185
5898
  className: "game-ui-icon-gallery",
@@ -5195,8 +5908,8 @@ function tr() {
5195
5908
  className: "game-ui-small-copy",
5196
5909
  children: e.gameHint
5197
5910
  })]
5198
- }), /* @__PURE__ */ t($n, {
5199
- names: Zn,
5911
+ }), /* @__PURE__ */ t($r, {
5912
+ names: Zr,
5200
5913
  style: "game"
5201
5914
  })]
5202
5915
  }),
@@ -5208,8 +5921,8 @@ function tr() {
5208
5921
  className: "game-ui-small-copy",
5209
5922
  children: e.lineHint
5210
5923
  })]
5211
- }), /* @__PURE__ */ t($n, {
5212
- names: Qn,
5924
+ }), /* @__PURE__ */ t($r, {
5925
+ names: Qr,
5213
5926
  style: "line"
5214
5927
  })]
5215
5928
  }),
@@ -5224,16 +5937,16 @@ function tr() {
5224
5937
  className: "game-ui-small-copy",
5225
5938
  children: e.spriteHint
5226
5939
  })]
5227
- }), /* @__PURE__ */ t(er, {})]
5940
+ }), /* @__PURE__ */ t(ei, {})]
5228
5941
  })
5229
5942
  ]
5230
5943
  });
5231
5944
  }
5232
- function nr({ title: e, body: r }) {
5233
- let [i, a] = d("en"), o = Tn[i], s = e && i === "en" ? e : o.heroTitle, l = r && i === "en" ? r : o.heroBody;
5234
- return c(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
5945
+ function ni({ title: e, body: r }) {
5946
+ let [i, a] = m("en"), o = Tr[i], s = e && i === "en" ? e : o.heroTitle, c = r && i === "en" ? r : o.heroBody;
5947
+ return l(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
5235
5948
  delete document.documentElement.dataset.gameUiPreview;
5236
- }), []), /* @__PURE__ */ t(En.Provider, {
5949
+ }), []), /* @__PURE__ */ t(Er.Provider, {
5237
5950
  value: o,
5238
5951
  children: /* @__PURE__ */ n("main", {
5239
5952
  "aria-label": "Swimmer UI Kit clay preview",
@@ -5246,7 +5959,7 @@ function nr({ title: e, body: r }) {
5246
5959
  tone: "ai",
5247
5960
  children: "@pieai/swimmer-ui-kit"
5248
5961
  }),
5249
- /* @__PURE__ */ t(nt, {
5962
+ /* @__PURE__ */ t(nn, {
5250
5963
  currentLabel: o.triggerLabel,
5251
5964
  label: o.langMenuLabel,
5252
5965
  onSelect: (e) => a(e),
@@ -5262,7 +5975,7 @@ function nr({ title: e, body: r }) {
5262
5975
  value: i
5263
5976
  }),
5264
5977
  /* @__PURE__ */ t("h1", { children: s }),
5265
- /* @__PURE__ */ t("p", { children: l })
5978
+ /* @__PURE__ */ t("p", { children: c })
5266
5979
  ]
5267
5980
  }),
5268
5981
  /* @__PURE__ */ n("section", {
@@ -5273,10 +5986,10 @@ function nr({ title: e, body: r }) {
5273
5986
  id: "game-ui-preview-token-title",
5274
5987
  children: o.sections.tokens
5275
5988
  }),
5276
- /* @__PURE__ */ t(kn, {}),
5989
+ /* @__PURE__ */ t(kr, {}),
5277
5990
  /* @__PURE__ */ t("div", {
5278
5991
  className: "game-ui-token-ledger",
5279
- children: Dn.map((e) => /* @__PURE__ */ t(On, {
5992
+ children: Dr.map((e) => /* @__PURE__ */ t(Or, {
5280
5993
  id: e.id,
5281
5994
  label: o.tokenGroups[e.id] ?? e.id,
5282
5995
  tokens: e.tokens
@@ -5296,7 +6009,7 @@ function nr({ title: e, body: r }) {
5296
6009
  className: "game-ui-small-copy",
5297
6010
  children: o.iconsIntro
5298
6011
  }),
5299
- /* @__PURE__ */ t(tr, {})
6012
+ /* @__PURE__ */ t(ti, {})
5300
6013
  ]
5301
6014
  }),
5302
6015
  /* @__PURE__ */ n("section", {
@@ -5305,7 +6018,7 @@ function nr({ title: e, body: r }) {
5305
6018
  children: [/* @__PURE__ */ t("h2", {
5306
6019
  id: "game-ui-preview-type-title",
5307
6020
  children: o.sections.typography
5308
- }), /* @__PURE__ */ t(An, {})]
6021
+ }), /* @__PURE__ */ t(Ar, {})]
5309
6022
  }),
5310
6023
  /* @__PURE__ */ n("section", {
5311
6024
  "aria-labelledby": "game-ui-preview-components-title",
@@ -5315,11 +6028,11 @@ function nr({ title: e, body: r }) {
5315
6028
  id: "game-ui-preview-components-title",
5316
6029
  children: o.sections.components
5317
6030
  }),
5318
- /* @__PURE__ */ t(jn, {}),
5319
- /* @__PURE__ */ t(Mn, {}),
5320
- /* @__PURE__ */ t(Fn, {}),
5321
- /* @__PURE__ */ t(In, {}),
5322
- /* @__PURE__ */ t(ve, {
6031
+ /* @__PURE__ */ t(jr, {}),
6032
+ /* @__PURE__ */ t(Mr, {}),
6033
+ /* @__PURE__ */ t(Fr, {}),
6034
+ /* @__PURE__ */ t(Ir, {}),
6035
+ /* @__PURE__ */ t(at, {
5323
6036
  entries: o.history,
5324
6037
  label: o.historyLabel
5325
6038
  })
@@ -5331,7 +6044,7 @@ function nr({ title: e, body: r }) {
5331
6044
  children: [/* @__PURE__ */ t("h2", {
5332
6045
  id: "game-ui-preview-forms-title",
5333
6046
  children: o.sections.forms
5334
- }), /* @__PURE__ */ t(Xn, {})]
6047
+ }), /* @__PURE__ */ t(Xr, {})]
5335
6048
  }),
5336
6049
  /* @__PURE__ */ n("section", {
5337
6050
  "aria-labelledby": "game-ui-preview-overlay-glass-title",
@@ -5345,7 +6058,7 @@ function nr({ title: e, body: r }) {
5345
6058
  className: "game-ui-small-copy",
5346
6059
  children: "Official HUD-on-scene tone: dark translucent glass, thin light border, no clay cast shadow, compact density. Use on any container that wraps scene-overlay chrome (3D tavern, cinematic stage). Nest inside light or night theme."
5347
6060
  }),
5348
- /* @__PURE__ */ t(Nn, {})
6061
+ /* @__PURE__ */ t(Nr, {})
5349
6062
  ]
5350
6063
  }),
5351
6064
  /* @__PURE__ */ n("section", {
@@ -5360,7 +6073,7 @@ function nr({ title: e, body: r }) {
5360
6073
  className: "game-ui-small-copy",
5361
6074
  children: o.liquidMetal.body
5362
6075
  }),
5363
- /* @__PURE__ */ t(Pn, {})
6076
+ /* @__PURE__ */ t(Pr, {})
5364
6077
  ]
5365
6078
  }),
5366
6079
  /* @__PURE__ */ n("section", {
@@ -5369,7 +6082,7 @@ function nr({ title: e, body: r }) {
5369
6082
  children: [/* @__PURE__ */ t("h2", {
5370
6083
  id: "game-ui-preview-ownmyspace-title",
5371
6084
  children: "OwnMySpace game surface pack"
5372
- }), /* @__PURE__ */ t(Gn, {})]
6085
+ }), /* @__PURE__ */ t(Gr, {})]
5373
6086
  }),
5374
6087
  /* @__PURE__ */ n("section", {
5375
6088
  "aria-labelledby": "game-ui-preview-terrain-build-title",
@@ -5383,7 +6096,7 @@ function nr({ title: e, body: r }) {
5383
6096
  className: "game-ui-small-copy",
5384
6097
  children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces."
5385
6098
  }),
5386
- /* @__PURE__ */ t(Vn, {})
6099
+ /* @__PURE__ */ t(Vr, {})
5387
6100
  ]
5388
6101
  }),
5389
6102
  /* @__PURE__ */ n("section", {
@@ -5398,7 +6111,7 @@ function nr({ title: e, body: r }) {
5398
6111
  className: "game-ui-small-copy",
5399
6112
  children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges."
5400
6113
  }),
5401
- /* @__PURE__ */ t(Wn, {})
6114
+ /* @__PURE__ */ t(Wr, {})
5402
6115
  ]
5403
6116
  }),
5404
6117
  /* @__PURE__ */ n("section", {
@@ -5413,7 +6126,7 @@ function nr({ title: e, body: r }) {
5413
6126
  className: "game-ui-small-copy",
5414
6127
  children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots."
5415
6128
  }),
5416
- /* @__PURE__ */ t(qn, {})
6129
+ /* @__PURE__ */ t(qr, {})
5417
6130
  ]
5418
6131
  }),
5419
6132
  /* @__PURE__ */ n("section", {
@@ -5422,7 +6135,7 @@ function nr({ title: e, body: r }) {
5422
6135
  children: [/* @__PURE__ */ t("h2", {
5423
6136
  id: "game-ui-preview-first-session-title",
5424
6137
  children: o.sections.firstSession
5425
- }), /* @__PURE__ */ t(Jn, {})]
6138
+ }), /* @__PURE__ */ t(Jr, {})]
5426
6139
  }),
5427
6140
  /* @__PURE__ */ n("section", {
5428
6141
  "aria-labelledby": "game-ui-preview-orientation-title",
@@ -5430,7 +6143,7 @@ function nr({ title: e, body: r }) {
5430
6143
  children: [/* @__PURE__ */ t("h2", {
5431
6144
  id: "game-ui-preview-orientation-title",
5432
6145
  children: o.sections.orientation
5433
- }), /* @__PURE__ */ t(tt, {
6146
+ }), /* @__PURE__ */ t(tn, {
5434
6147
  badgeLabel: o.orientation.badge,
5435
6148
  body: o.orientation.body,
5436
6149
  cta: o.orientation.cta,
@@ -5445,11 +6158,11 @@ function nr({ title: e, body: r }) {
5445
6158
  children: [/* @__PURE__ */ t("h2", {
5446
6159
  id: "game-ui-preview-responsive-title",
5447
6160
  children: o.sections.responsive
5448
- }), /* @__PURE__ */ t(Yn, {})]
6161
+ }), /* @__PURE__ */ t(Yr, {})]
5449
6162
  })
5450
6163
  ]
5451
6164
  })
5452
6165
  });
5453
6166
  }
5454
6167
  //#endregion
5455
- export { Le as CLAY_ASSETS, Oe as CLAY_ASSET_BASE_PATH, Ee as CLAY_ASSET_SIZE_TOKENS, W as CLAY_COLOR_TOKENS, we as CLAY_ELEVATION_TOKENS, Fe as CLAY_GAME_SPRITES, Ie as CLAY_GAME_SPRITE_NAMES, Ae as CLAY_ICON_NAMES, ke as CLAY_ICON_VARIANTS, J as CLAY_LAYER_TOKENS, be as CLAY_LIQUID_METAL_TOKENS, be as GAME_UI_LIQUID_METAL_TOKENS, q as CLAY_MOTION_TOKENS, xe as CLAY_OVERLAY_GLASS_TOKENS, xe as GAME_UI_OVERLAY_GLASS_TOKENS, Ce as CLAY_RADIUS_TOKENS, G as CLAY_SEMANTIC_TOKENS, Se as CLAY_SPACE_TOKENS, Te as CLAY_TARGET_TOKENS, K as CLAY_TYPE_TOKENS, De as CLAY_UI_TOKENS, x as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, ot as FirstSessionHud, st as FirstSessionOnboarding, Q as GAME_UI_OVERLAY, xn as GAME_UI_PREVIEW_MESSAGES, Cn as GAME_UI_TARGETS, wn as GAME_UI_THEME_CONTRACT, Sn as GAME_UI_TOKENS, bt as GameActionGrid, Dt as GameAssetCard, Z as GameAssetIcon, Ot as GameAssetLibrary, pt as GameAvatar, X as GameBadge, un as GameBeforeAfterToggle, zt as GameBrushControls, Ht as GameBuildLibrary, b as GameButton, ge as GameCallout, Qe as GameCardFan, dt as GameCheckbox, gn as GameCollapsiblePanel, Ut as GameCompactGameDrawer, fn as GameCompactJobDrawer, cn as GameConstructionApprovalBar, dn as GameConstructionJobCard, sn as GameConstructionProgress, pn as GameContractorPanel, _e as GameDialog, ht as GameEmptyState, vt as GameFactList, ut as GameField, ve as GameHistoryPanel, Ze as GameHud, P as GameHudActions, I as GameIconButton, ct as GameInput, nt as GameLanguageMenu, rt as GameLoadingState, Bt as GameMaterialSwatches, bn as GameModal, Ct as GameMovementPad, At as GameObjectToolbar, tt as GameOrientationGate, F as GamePanel, kt as GamePlacementToolbar, mt as GameProgress, U as GamePrompt, V as GameRadialMenu, ln as GameRobotCrewStatus, _t as GameSceneHudLayout, R as GameSegmentedControl, gt as GameShell, z as GameSlider, $e as GameStageTile, yt as GameStatList, L as GameTabs, Kt as GameTerrainBuildToolbox, Lt as GameTerrainModeControl, Rt as GameTerrainToolStrip, lt as GameTextArea, H as GameToast, B as GameToggle, ye as GameTooltip, nr as GameUiPreview, Vt as GameUndoRedoActions, yn as GameWindowPanel, N as LiquidMetalButton, Je as acknowledgeClayPlaceholders, Ge as getClayAssetBasePath, Ue as getClayAssetMode, it as getClayCatalogPaths, Ye as getClayIconPath, Pe as getClayIconStyles, Xe as getClaySourceAssetPath, ee as getLiquidMetalContextBudget, y as playGameInteractionSound, v as playGameInteractionSoundForContext, We as setClayAssetBasePath, He as setClayAssetMode, w as setLiquidMetalContextBudget };
6168
+ export { Lt as CLAY_ASSETS, Ot as CLAY_ASSET_BASE_PATH, Et as CLAY_ASSET_SIZE_TOKENS, J as CLAY_COLOR_TOKENS, St as CLAY_ELEVATION_TOKENS, Ft as CLAY_GAME_SPRITES, It as CLAY_GAME_SPRITE_NAMES, At as CLAY_ICON_NAMES, kt as CLAY_ICON_VARIANTS, wt as CLAY_LAYER_TOKENS, gt as CLAY_LIQUID_METAL_TOKENS, gt as GAME_UI_LIQUID_METAL_TOKENS, Ct as CLAY_MOTION_TOKENS, _t as CLAY_OVERLAY_GLASS_TOKENS, _t as GAME_UI_OVERLAY_GLASS_TOKENS, xt as CLAY_RADIUS_TOKENS, vt as CLAY_SEMANTIC_TOKENS, bt as CLAY_SPACE_TOKENS, Tt as CLAY_TARGET_TOKENS, yt as CLAY_TYPE_TOKENS, Dt as CLAY_UI_TOKENS, U as DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET, W as DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET, T as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, sn as FirstSessionHud, cn as FirstSessionOnboarding, Q as GAME_UI_OVERLAY, xr as GAME_UI_PREVIEW_MESSAGES, Cr as GAME_UI_TARGETS, wr as GAME_UI_THEME_CONTRACT, Sr as GAME_UI_TOKENS, xn as GameActionGrid, On as GameAssetCard, Z as GameAssetIcon, kn as GameAssetLibrary, mn as GameAvatar, X as GameBadge, ur as GameBeforeAfterToggle, Bn as GameBrushControls, Un as GameBuildLibrary, w as GameButton, rt as GameCallout, Qt as GameCardFan, fn as GameCheckbox, gr as GameCollapsiblePanel, Wn as GameCompactGameDrawer, fr as GameCompactJobDrawer, cr as GameConstructionApprovalBar, dr as GameConstructionJobCard, sr as GameConstructionProgress, pr as GameContractorPanel, it as GameDialog, gn as GameEmptyState, yn as GameFactList, dn as GameField, at as GameHistoryPanel, Zt as GameHud, ot as GameHudActions, st as GameIconButton, ln as GameInput, nn as GameLanguageMenu, rn as GameLoadingState, Vn as GameMaterialSwatches, br as GameModal, wn as GameMovementPad, jn as GameObjectToolbar, tn as GameOrientationGate, q as GamePanel, An as GamePlacementToolbar, hn as GameProgress, ht as GamePrompt, pt as GameRadialMenu, lr as GameRobotCrewStatus, vn as GameSceneHudLayout, ut as GameSegmentedControl, _n as GameShell, dt as GameSlider, $t as GameStageTile, bn as GameStatList, lt as GameTabs, qn as GameTerrainBuildToolbox, Rn as GameTerrainModeControl, zn as GameTerrainToolStrip, un as GameTextArea, mt as GameToast, ft as GameToggle, ct as GameTooltip, ni as GameUiPreview, Hn as GameUndoRedoActions, yr as GameWindowPanel, nt as LiquidGroup, tt as LiquidItem, L as LiquidMetalButton, Jt as acknowledgeClayPlaceholders, Gt as getClayAssetBasePath, Ut as getClayAssetMode, an as getClayCatalogPaths, Yt as getClayIconPath, Pt as getClayIconStyles, Xt as getClaySourceAssetPath, Ce as getLiquidGooeyBudget, O as getLiquidMetalContextBudget, C as playGameInteractionSound, S as playGameInteractionSoundForContext, Wt as setClayAssetBasePath, Ht as setClayAssetMode, we as setLiquidGooeyBudget, ee as setLiquidMetalContextBudget };