@pieai/swimmer-ui-kit 1.0.1 → 1.1.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,44 +1,44 @@
1
1
  import { jsx as e, jsxs as o, Fragment as Ge } from "react/jsx-runtime";
2
- import { useId as Y, useState as M, useEffect as te, forwardRef as Oe, useRef as aa, createContext as ia, useContext as ta } from "react";
3
- let W = null, we = !1;
2
+ import { useId as _, isValidElement as aa, cloneElement as ia, useState as M, useEffect as te, forwardRef as Oe, useRef as ta, createContext as na, useContext as la } from "react";
3
+ let Y = null, we = !1;
4
4
  function Ne(a) {
5
5
  return typeof a != "number" || !Number.isFinite(a) ? 1 : Math.min(1, Math.max(0, a));
6
6
  }
7
- function na() {
7
+ function oa() {
8
8
  we || typeof document > "u" || (document.addEventListener("visibilitychange", () => {
9
- document.visibilityState === "hidden" && W?.state === "running" && W.suspend();
9
+ document.visibilityState === "hidden" && Y?.state === "running" && Y.suspend();
10
10
  }), we = !0);
11
11
  }
12
- function la() {
13
- return typeof window > "u" || typeof window.AudioContext > "u" ? null : (na(), W ??= new window.AudioContext(), W);
12
+ function sa() {
13
+ return typeof window > "u" || typeof window.AudioContext > "u" ? null : (oa(), Y ??= new window.AudioContext(), Y);
14
14
  }
15
- function oa(a) {
15
+ function ra(a) {
16
16
  const t = /* @__PURE__ */ new WeakMap();
17
17
  return {
18
18
  createGain: () => {
19
- const i = a.createGain(), l = {
20
- connect: (n) => {
21
- n instanceof AudioNode && i.connect(n);
19
+ const i = a.createGain(), n = {
20
+ connect: (l) => {
21
+ l instanceof AudioNode && i.connect(l);
22
22
  },
23
23
  gain: i.gain
24
24
  };
25
- return t.set(l, i), l;
25
+ return t.set(n, i), n;
26
26
  },
27
27
  createOscillator: () => {
28
28
  const i = a.createOscillator();
29
29
  return {
30
- connect: (l) => {
31
- const n = t.get(l);
32
- n && i.connect(n);
30
+ connect: (n) => {
31
+ const l = t.get(n);
32
+ l && i.connect(l);
33
33
  },
34
34
  frequency: i.frequency,
35
- start: (l) => i.start(l),
36
- stop: (l) => i.stop(l),
35
+ start: (n) => i.start(n),
36
+ stop: (n) => i.stop(n),
37
37
  get type() {
38
38
  return i.type;
39
39
  },
40
- set type(l) {
41
- i.type = l;
40
+ set type(n) {
41
+ i.type = n;
42
42
  }
43
43
  };
44
44
  },
@@ -49,54 +49,54 @@ function oa(a) {
49
49
  suspend: () => a.suspend()
50
50
  };
51
51
  }
52
- function sa(a, t = {}) {
52
+ function ca(a, t = {}) {
53
53
  if (t.enabled === !1) return !1;
54
54
  const i = 0.06 * Ne(t.masterVolume) * Ne(t.sfxVolume);
55
55
  if (i <= 0) return !1;
56
56
  a.state === "suspended" && a.resume();
57
- const l = a.currentTime, n = a.createOscillator(), s = a.createGain();
58
- return n.type = "triangle", n.frequency.setValueAtTime(420, l), n.frequency.exponentialRampToValueAtTime(620, l + 0.045), s.gain.setValueAtTime(1e-4, l), s.gain.exponentialRampToValueAtTime(i, l + 8e-3), s.gain.exponentialRampToValueAtTime(1e-4, l + 0.055), n.connect(s), s.connect(a.destination), n.start(l), n.stop(l + 0.055), !0;
57
+ const n = a.currentTime, l = a.createOscillator(), s = a.createGain();
58
+ return l.type = "triangle", l.frequency.setValueAtTime(420, n), l.frequency.exponentialRampToValueAtTime(620, n + 0.045), s.gain.setValueAtTime(1e-4, n), s.gain.exponentialRampToValueAtTime(i, n + 8e-3), s.gain.exponentialRampToValueAtTime(1e-4, n + 0.055), l.connect(s), s.connect(a.destination), l.start(n), l.stop(n + 0.055), !0;
59
59
  }
60
- function ra(a = {}) {
61
- const t = la();
62
- return t ? sa(oa(t), a) : !1;
60
+ function da(a = {}) {
61
+ const t = sa();
62
+ return t ? ca(ra(t), a) : !1;
63
63
  }
64
64
  function C({
65
65
  children: a,
66
66
  className: t,
67
67
  onClick: i,
68
- sound: l = !1,
69
- static: n = !1,
68
+ sound: n = !1,
69
+ static: l = !1,
70
70
  type: s = "button",
71
- variant: r = "secondary",
72
- ...d
71
+ variant: d = "secondary",
72
+ ...r
73
73
  }) {
74
- const u = ["game-ui-button", `game-ui-button--${r}`, n && "game-ui-button--static", t].filter(Boolean).join(" ");
74
+ const u = ["game-ui-button", `game-ui-button--${d}`, l && "game-ui-button--static", t].filter(Boolean).join(" ");
75
75
  return /* @__PURE__ */ e("button", { className: u, onClick: (b) => {
76
- l && ra(l), i?.(b);
77
- }, type: s, ...d, children: a });
76
+ n && da(n), i?.(b);
77
+ }, type: s, ...r, children: a });
78
78
  }
79
- function Ti({
79
+ function Ai({
80
80
  heading: a,
81
81
  children: t,
82
82
  tone: i = "info",
83
- className: l,
84
- ...n
83
+ className: n,
84
+ ...l
85
85
  }) {
86
- const s = ["game-ui-callout", `game-ui-callout--${i}`, l].filter(Boolean).join(" ");
87
- return /* @__PURE__ */ o("div", { className: s, role: "note", "data-tone": i, ...n, children: [
86
+ const s = ["game-ui-callout", `game-ui-callout--${i}`, n].filter(Boolean).join(" ");
87
+ return /* @__PURE__ */ o("div", { className: s, role: "note", "data-tone": i, ...l, children: [
88
88
  a ? /* @__PURE__ */ e("div", { className: "game-ui-callout-title", children: a }) : null,
89
89
  /* @__PURE__ */ e("div", { className: "game-ui-callout-body", children: t })
90
90
  ] });
91
91
  }
92
- function ca({ children: a, className: t, title: i }) {
93
- const l = Y(), n = ["game-ui-dialog", t].filter(Boolean).join(" ");
94
- return /* @__PURE__ */ o("section", { "aria-labelledby": l, "aria-modal": "true", className: n, role: "dialog", children: [
95
- /* @__PURE__ */ e("h2", { id: l, children: i }),
92
+ function ma({ children: a, className: t, title: i }) {
93
+ const n = _(), l = ["game-ui-dialog", t].filter(Boolean).join(" ");
94
+ return /* @__PURE__ */ o("section", { "aria-labelledby": n, "aria-modal": "true", className: l, role: "dialog", children: [
95
+ /* @__PURE__ */ e("h2", { id: n, children: i }),
96
96
  /* @__PURE__ */ e("div", { className: "game-ui-dialog-body", children: a })
97
97
  ] });
98
98
  }
99
- function da({ entries: a, label: t }) {
99
+ function ua({ entries: a, label: t }) {
100
100
  return /* @__PURE__ */ e("section", { "aria-label": t, className: "game-ui-history", children: a.map((i) => /* @__PURE__ */ o("article", { className: "game-ui-history-entry", "data-entry-kind": i.kind, children: [
101
101
  /* @__PURE__ */ o("div", { className: "game-ui-history-entry-header", children: [
102
102
  /* @__PURE__ */ e("strong", { children: i.speaker }),
@@ -105,80 +105,86 @@ function da({ entries: a, label: t }) {
105
105
  /* @__PURE__ */ e("p", { children: i.text })
106
106
  ] }, i.id)) });
107
107
  }
108
- function K({ children: a, className: t, label: i, ...l }) {
109
- const n = ["game-ui-hud-actions", t].filter(Boolean).join(" ");
110
- return /* @__PURE__ */ e("nav", { "aria-label": i, className: n, "data-safe-area": "hud-actions", ...l, children: a });
108
+ function K({ children: a, className: t, label: i, ...n }) {
109
+ const l = ["game-ui-hud-actions", t].filter(Boolean).join(" ");
110
+ return /* @__PURE__ */ e("nav", { "aria-label": i, className: l, "data-safe-area": "hud-actions", ...n, children: a });
111
111
  }
112
- function B({ children: a, className: t, title: i, tone: l = "default", ...n }) {
112
+ function B({ children: a, className: t, title: i, tone: n = "default", ...l }) {
113
113
  const s = ["game-ui-panel", t].filter(Boolean).join(" ");
114
- return /* @__PURE__ */ o("section", { ...n, className: s, "data-panel-tone": l, children: [
114
+ return /* @__PURE__ */ o("section", { ...l, className: s, "data-panel-tone": n, children: [
115
115
  i ? /* @__PURE__ */ e("h3", { children: i }) : null,
116
116
  a
117
117
  ] });
118
118
  }
119
- function O({ children: a, className: t, label: i, type: l = "button", ...n }) {
119
+ function O({ children: a, className: t, label: i, type: n = "button", ...l }) {
120
120
  const s = ["game-ui-icon-button", t].filter(Boolean).join(" ");
121
- return /* @__PURE__ */ e("button", { "aria-label": i, className: s, type: l, ...n, children: a });
121
+ return /* @__PURE__ */ e("button", { "aria-label": i, className: s, type: n, ...l, children: a });
122
122
  }
123
- function ma({ children: a, label: t }) {
123
+ function ga({ children: a, label: t }) {
124
+ const i = _(), n = aa(a) ? ia(a, {
125
+ "aria-describedby": [a.props["aria-describedby"], i].filter(Boolean).join(" ")
126
+ }) : a;
124
127
  return /* @__PURE__ */ o("span", { className: "game-ui-tooltip", children: [
125
- a,
126
- /* @__PURE__ */ e("span", { role: "tooltip", children: t })
128
+ n,
129
+ /* @__PURE__ */ e("span", { id: i, role: "tooltip", children: t })
127
130
  ] });
128
131
  }
129
- function ua({ activeId: a, onSelect: t, tabs: i }) {
130
- return /* @__PURE__ */ e("div", { className: "game-ui-tabs", onKeyDown: (n) => {
131
- if (!t || i.length === 0) return;
132
- const s = Math.max(0, i.findIndex((c) => c.id === a));
133
- let r;
134
- switch (n.key) {
132
+ function pa({ activeId: a, id: t, onSelect: i, tabs: n }) {
133
+ const l = _(), s = t ?? l;
134
+ return /* @__PURE__ */ e("div", { className: "game-ui-tabs", onKeyDown: (r) => {
135
+ if (!i || n.length === 0) return;
136
+ const u = Math.max(0, n.findIndex((f) => f.id === a));
137
+ let c;
138
+ switch (r.key) {
135
139
  case "ArrowLeft":
136
- r = (s - 1 + i.length) % i.length;
140
+ c = (u - 1 + n.length) % n.length;
137
141
  break;
138
142
  case "ArrowRight":
139
- r = (s + 1) % i.length;
143
+ c = (u + 1) % n.length;
140
144
  break;
141
145
  case "Home":
142
- r = 0;
146
+ c = 0;
143
147
  break;
144
148
  case "End":
145
- r = i.length - 1;
149
+ c = n.length - 1;
146
150
  break;
147
151
  default:
148
152
  return;
149
153
  }
150
- n.preventDefault();
151
- const d = i[r];
152
- if (!d) return;
153
- d.id !== a && t(d.id), n.currentTarget.querySelectorAll('[role="tab"]')[r]?.focus();
154
- }, role: "tablist", children: i.map((n) => /* @__PURE__ */ e(
154
+ r.preventDefault();
155
+ const b = n[c];
156
+ if (!b) return;
157
+ b.id !== a && i(b.id), r.currentTarget.querySelectorAll('[role="tab"]')[c]?.focus();
158
+ }, role: "tablist", children: n.map((r) => /* @__PURE__ */ e(
155
159
  "button",
156
160
  {
157
- "aria-selected": n.id === a,
161
+ "aria-controls": r.panelId,
162
+ "aria-selected": r.id === a,
158
163
  className: "game-ui-tab",
159
- onClick: t ? () => t(n.id) : void 0,
164
+ id: `${s}-${r.id}`,
165
+ onClick: i ? () => i(r.id) : void 0,
160
166
  role: "tab",
161
- tabIndex: n.id === a ? 0 : -1,
167
+ tabIndex: r.id === a ? 0 : -1,
162
168
  type: "button",
163
- children: n.label
169
+ children: r.label
164
170
  },
165
- n.id
171
+ r.id
166
172
  )) });
167
173
  }
168
- function Pe({ activeId: a, label: t, onSelect: i, options: l }) {
169
- return /* @__PURE__ */ e("div", { "aria-label": t, className: "game-ui-segmented", role: "group", children: l.map((n) => /* @__PURE__ */ e(
174
+ function Pe({ activeId: a, label: t, onSelect: i, options: n }) {
175
+ return /* @__PURE__ */ e("div", { "aria-label": t, className: "game-ui-segmented", role: "group", children: n.map((l) => /* @__PURE__ */ e(
170
176
  "button",
171
177
  {
172
- "aria-pressed": n.id === a,
178
+ "aria-pressed": l.id === a,
173
179
  className: "game-ui-segmented-option",
174
- onClick: i ? () => i(n.id) : void 0,
180
+ onClick: i ? () => i(l.id) : void 0,
175
181
  type: "button",
176
- children: n.label
182
+ children: l.label
177
183
  },
178
- n.id
184
+ l.id
179
185
  )) });
180
186
  }
181
- function ga({ label: a, max: t, min: i, onChange: l, value: n }) {
187
+ function ha({ label: a, max: t, min: i, onChange: n, value: l }) {
182
188
  return /* @__PURE__ */ o("label", { className: "game-ui-slider", children: [
183
189
  /* @__PURE__ */ e("span", { children: a }),
184
190
  /* @__PURE__ */ e(
@@ -187,27 +193,46 @@ function ga({ label: a, max: t, min: i, onChange: l, value: n }) {
187
193
  "aria-label": a,
188
194
  max: t,
189
195
  min: i,
190
- onChange: l ? (s) => l(Number(s.currentTarget.value)) : void 0,
191
- readOnly: !l,
196
+ onChange: n ? (s) => n(Number(s.currentTarget.value)) : void 0,
197
+ readOnly: !n,
192
198
  type: "range",
193
- value: n
199
+ value: l
194
200
  }
195
201
  )
196
202
  ] });
197
203
  }
198
- function pa({ checked: a, disabled: t, label: i, onClick: l }) {
199
- return /* @__PURE__ */ o("button", { "aria-checked": a, className: "game-ui-toggle", disabled: t, onClick: l, role: "switch", type: "button", children: [
204
+ function ba({ checked: a, disabled: t, label: i, onClick: n }) {
205
+ return /* @__PURE__ */ o("button", { "aria-checked": a, className: "game-ui-toggle", disabled: t, onClick: n, role: "switch", type: "button", children: [
200
206
  /* @__PURE__ */ e("span", { children: i }),
201
207
  /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-toggle-track" })
202
208
  ] });
203
209
  }
204
- function ha({ items: a, label: t }) {
205
- return /* @__PURE__ */ e("div", { "aria-label": t, className: "game-ui-radial-menu", role: "menu", children: a.map((i) => /* @__PURE__ */ e("button", { className: "game-ui-radial-item", role: "menuitem", type: "button", children: i.label }, i.id)) });
210
+ function va({ items: a, label: t, onSelect: i }) {
211
+ return /* @__PURE__ */ e(
212
+ "div",
213
+ {
214
+ "aria-label": t,
215
+ className: "game-ui-radial-menu",
216
+ role: "group",
217
+ style: { "--radial-count": a.length },
218
+ children: a.map((n, l) => /* @__PURE__ */ e(
219
+ "button",
220
+ {
221
+ className: "game-ui-radial-item",
222
+ onClick: i ? () => i(n.id) : void 0,
223
+ style: { "--radial-index": l },
224
+ type: "button",
225
+ children: n.label
226
+ },
227
+ n.id
228
+ ))
229
+ }
230
+ );
206
231
  }
207
232
  function ke({ children: a, tone: t = "info" }) {
208
233
  return /* @__PURE__ */ e("div", { className: "game-ui-toast", "data-toast-tone": t, role: t === "danger" ? "alert" : "status", children: a });
209
234
  }
210
- function Ci({ actionLabel: a, children: t, title: i }) {
235
+ function Bi({ actionLabel: a, children: t, title: i }) {
211
236
  return /* @__PURE__ */ o("section", { "aria-label": i, className: "game-ui-prompt", children: [
212
237
  /* @__PURE__ */ o("div", { children: [
213
238
  /* @__PURE__ */ e("h3", { children: i }),
@@ -218,7 +243,7 @@ function Ci({ actionLabel: a, children: t, title: i }) {
218
243
  }
219
244
  const N = {
220
245
  ink: "#3b2d23",
221
- inkMuted: "#7b6652",
246
+ inkMuted: "#786250",
222
247
  parchment: "#fff8ec",
223
248
  parchmentDeep: "#f4e2c6",
224
249
  cream: "#f3e8d8",
@@ -332,7 +357,7 @@ const N = {
332
357
  terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)",
333
358
  buildRailCardSize: "var(--game-ui-build-rail-card-size)",
334
359
  brushNumberWidth: "var(--game-ui-brush-number-width)"
335
- }, Ai = {
360
+ }, xi = {
336
361
  colors: N,
337
362
  semantic: ne,
338
363
  typography: le,
@@ -343,7 +368,7 @@ const N = {
343
368
  layers: de,
344
369
  targets: me,
345
370
  assetSizing: ue
346
- }, ba = "/assets/game/ui/clay/phase03-clay-kit", m = (a) => `${ba}/${a}`, ge = {
371
+ }, fa = "/assets/game/ui/clay/phase03-clay-kit", m = (a) => `${fa}/${a}`, ge = {
347
372
  ai: { line: m("icons/function/brain-v1.png") },
348
373
  alert: { game: m("components/common/alert-v1.png"), line: m("icons/function/warning-v1.png") },
349
374
  card: { line: m("icons/function/card-v1.png") },
@@ -418,7 +443,7 @@ const ze = {
418
443
  swordB: m("icons/common/sword-b-v1.png"),
419
444
  talaria: m("icons/common/talaria-v1.png"),
420
445
  treasure: m("icons/common/treasure-v1.png")
421
- }, va = Object.keys(ze), V = {
446
+ }, ya = Object.keys(ze), H = {
422
447
  buttons: {
423
448
  primary: m("buttons/button-brown-large-v2.png"),
424
449
  blue: m("buttons/button-blue-large-v2.png"),
@@ -449,7 +474,7 @@ const ze = {
449
474
  contactSheetComponents: m("catalog/component-candidates-contact-sheet-v1.png"),
450
475
  contactSheetFunction: m("catalog/function-icons-contact-sheet-v1.png")
451
476
  }
452
- }, fa = {
477
+ }, wa = {
453
478
  ai: "AI",
454
479
  alert: "!",
455
480
  card: "▣",
@@ -485,7 +510,7 @@ const ze = {
485
510
  timer: "◷",
486
511
  trophy: "★",
487
512
  vote: "⌾"
488
- }, ya = {
513
+ }, Na = {
489
514
  ai: N.berry,
490
515
  alert: N.red,
491
516
  card: N.honey,
@@ -522,34 +547,34 @@ const ze = {
522
547
  trophy: N.honey,
523
548
  vote: N.red
524
549
  };
525
- function wa(a) {
526
- const t = fa[a], i = ya[a], l = N.parchment, n = `<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="${l}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${i}" 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="${l}">${t}</text></svg>`;
527
- return `data:image/svg+xml,${encodeURIComponent(n)}`;
550
+ function ka(a) {
551
+ const t = wa[a], i = Na[a], n = N.parchment, l = `<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="${n}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${i}" 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="${n}">${t}</text></svg>`;
552
+ return `data:image/svg+xml,${encodeURIComponent(l)}`;
528
553
  }
529
554
  let be = "inline";
530
- function Bi(a) {
555
+ function Ii(a) {
531
556
  be = a;
532
557
  }
533
- function xi() {
558
+ function Ei() {
534
559
  return be;
535
560
  }
536
561
  function Z(a, t = {}) {
537
- return t.inline ?? be === "inline" ? wa(a) : he(a, t.style);
562
+ return t.inline ?? be === "inline" ? ka(a) : he(a, t.style);
538
563
  }
539
- function Ii(a, t) {
564
+ function Ri(a, t) {
540
565
  return he(a, t);
541
566
  }
542
567
  function S({ children: a, className: t, tone: i = "neutral" }) {
543
- const l = ["game-ui-badge", t].filter(Boolean).join(" ");
544
- return /* @__PURE__ */ e("span", { className: l, "data-badge-tone": i, children: a });
568
+ const n = ["game-ui-badge", t].filter(Boolean).join(" ");
569
+ return /* @__PURE__ */ e("span", { className: n, "data-badge-tone": i, children: a });
545
570
  }
546
- function L({ className: a, icon: t, label: i, size: l = "md", style: n, useSourceAsset: s = !1 }) {
547
- const r = ["game-ui-asset-icon", a].filter(Boolean).join(" "), d = i ? { "aria-label": i } : { "aria-hidden": !0 }, u = Z(t, { ...n ? { style: n } : {}, ...s ? { inline: !1 } : {} });
548
- return /* @__PURE__ */ e("span", { className: r, "data-icon-size": l, "data-icon-style": n ?? "game", ...d, children: /* @__PURE__ */ e("img", { alt: "", src: u }) });
571
+ function L({ className: a, icon: t, label: i, size: n = "md", style: l, useSourceAsset: s = !1 }) {
572
+ const d = ["game-ui-asset-icon", a].filter(Boolean).join(" "), r = i ? { "aria-label": i } : { "aria-hidden": !0 }, u = Z(t, { ...l ? { style: l } : {}, ...s ? { inline: !1 } : {} });
573
+ return /* @__PURE__ */ e("span", { className: d, "data-icon-size": n, "data-icon-style": l ?? "game", ...r, children: /* @__PURE__ */ e("img", { alt: "", src: u }) });
549
574
  }
550
- function Ve({ actions: a, className: t, items: i, label: l }) {
551
- const n = ["game-ui-hud", t].filter(Boolean).join(" ");
552
- return /* @__PURE__ */ o("section", { "aria-label": l, className: n, children: [
575
+ function Ve({ actions: a, className: t, items: i, label: n }) {
576
+ const l = ["game-ui-hud", t].filter(Boolean).join(" ");
577
+ return /* @__PURE__ */ o("section", { "aria-label": n, className: l, children: [
553
578
  /* @__PURE__ */ e("div", { className: "game-ui-hud-cluster", children: i.map((s) => /* @__PURE__ */ o("article", { className: "game-ui-hud-chip", children: [
554
579
  s.icon ? /* @__PURE__ */ e(L, { icon: s.icon, size: "md" }) : null,
555
580
  /* @__PURE__ */ o("span", { children: [
@@ -561,54 +586,54 @@ function Ve({ actions: a, className: t, items: i, label: l }) {
561
586
  a ? /* @__PURE__ */ e("div", { className: "game-ui-hud-tools", children: a }) : null
562
587
  ] });
563
588
  }
564
- function Na({ cards: a, className: t, label: i }) {
565
- const l = ["game-ui-card-fan", t].filter(Boolean).join(" "), n = (a.length - 1) / 2;
566
- return /* @__PURE__ */ e("div", { "aria-label": i, className: l, role: "list", children: a.map((s, r) => {
567
- const d = {
568
- "--game-ui-card-index": r,
569
- "--game-ui-card-offset": r - n
589
+ function Sa({ cards: a, className: t, label: i }) {
590
+ const n = ["game-ui-card-fan", t].filter(Boolean).join(" "), l = (a.length - 1) / 2;
591
+ return /* @__PURE__ */ e("div", { "aria-label": i, className: n, role: "list", children: a.map((s, d) => {
592
+ const r = {
593
+ "--game-ui-card-index": d,
594
+ "--game-ui-card-offset": d - l
570
595
  };
571
- return /* @__PURE__ */ o("article", { className: "game-ui-card-fan-card", role: "listitem", style: d, children: [
596
+ return /* @__PURE__ */ o("li", { className: "game-ui-card-fan-card", style: r, children: [
572
597
  s.icon ? /* @__PURE__ */ e(L, { icon: s.icon, size: "lg" }) : null,
573
598
  /* @__PURE__ */ e("small", { children: s.kicker }),
574
599
  /* @__PURE__ */ e("strong", { children: s.title })
575
600
  ] }, s.id);
576
601
  }) });
577
602
  }
578
- function q({ badge: a, className: t, icon: i, kicker: l, selected: n = !1, summary: s, title: r, tone: d = "daily", type: u = "button", ...c }) {
603
+ function q({ badge: a, className: t, icon: i, kicker: n, selected: l = !1, summary: s, title: d, tone: r = "daily", type: u = "button", ...c }) {
579
604
  const b = ["game-ui-stage-tile", t].filter(Boolean).join(" ");
580
- return /* @__PURE__ */ o("button", { "aria-pressed": n, className: b, "data-stage-tone": d, type: u, ...c, children: [
605
+ return /* @__PURE__ */ o("button", { "aria-pressed": l, className: b, "data-stage-tone": r, type: u, ...c, children: [
581
606
  i ? /* @__PURE__ */ e(L, { icon: i, size: "xl" }) : null,
582
607
  /* @__PURE__ */ o("span", { className: "game-ui-stage-tile-copy", children: [
583
- /* @__PURE__ */ e("small", { children: l }),
584
- /* @__PURE__ */ e("strong", { children: r }),
608
+ /* @__PURE__ */ e("small", { children: n }),
609
+ /* @__PURE__ */ e("strong", { children: d }),
585
610
  /* @__PURE__ */ e("span", { children: s })
586
611
  ] }),
587
- a ? /* @__PURE__ */ e(S, { tone: n ? "success" : "neutral", children: a }) : null
612
+ a ? /* @__PURE__ */ e(S, { tone: l ? "success" : "neutral", children: a }) : null
588
613
  ] });
589
614
  }
590
615
  function J() {
591
616
  return typeof window > "u" ? !1 : (window.matchMedia?.("(pointer: coarse), (max-width: 899px)").matches ?? window.innerWidth < 900) && window.innerHeight > window.innerWidth;
592
617
  }
593
- function ka({ body: a, cta: t, badgeLabel: i = "Landscape only", manualHint: l = "Rotate manually if this browser blocks automatic landscape lock.", preview: n = !1, title: s }) {
594
- const [r, d] = M(n || J), [u, c] = M("");
618
+ function La({ body: a, cta: t, badgeLabel: i = "Landscape only", manualHint: n = "Rotate manually if this browser blocks automatic landscape lock.", preview: l = !1, title: s }) {
619
+ const [d, r] = M(l || J), [u, c] = M("");
595
620
  if (te(() => {
596
- if (n) return;
621
+ if (l) return;
597
622
  const g = () => {
598
- const v = J();
599
- d(v), v || c("");
623
+ const f = J();
624
+ r(f), f || c("");
600
625
  };
601
626
  return g(), window.addEventListener("resize", g), window.addEventListener("orientationchange", g), () => {
602
627
  window.removeEventListener("resize", g), window.removeEventListener("orientationchange", g);
603
628
  };
604
- }, [n]), !r) return null;
629
+ }, [l]), !d) return null;
605
630
  const b = async () => {
606
- if (c(""), !n)
631
+ if (c(""), !l)
607
632
  try {
608
633
  const g = document.documentElement;
609
- !document.fullscreenElement && g.requestFullscreen && await g.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), d(J());
634
+ !document.fullscreenElement && g.requestFullscreen && await g.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), r(J());
610
635
  } catch {
611
- c(l);
636
+ c(n);
612
637
  }
613
638
  };
614
639
  return /* @__PURE__ */ e("aside", { "aria-label": s, className: "game-ui-orientation-gate", children: /* @__PURE__ */ o("div", { className: "game-ui-orientation-card", children: [
@@ -622,21 +647,21 @@ function ka({ body: a, cta: t, badgeLabel: i = "Landscape only", manualHint: l =
622
647
  u ? /* @__PURE__ */ e("small", { children: u }) : null
623
648
  ] }) });
624
649
  }
625
- function Sa({ className: a, currentLabel: t, label: i, options: l, value: n, defaultValue: s, onSelect: r }) {
626
- const [d, u] = M(!1), [c, b] = M(s ?? l[0]?.id ?? ""), g = Y(), v = ["game-ui-language-menu", a].filter(Boolean).join(" "), y = n ?? c, k = l.find((w) => w.id === y), p = t ?? k?.label ?? l[0]?.label ?? "", f = (w) => {
627
- n === void 0 && b(w), r?.(w), u(!1);
650
+ function Ta({ className: a, currentLabel: t, label: i, options: n, value: l, defaultValue: s, onSelect: d }) {
651
+ const [r, u] = M(!1), [c, b] = M(s ?? n[0]?.id ?? ""), g = _(), f = ["game-ui-language-menu", a].filter(Boolean).join(" "), v = l ?? c, k = n.find((w) => w.id === v), p = t ?? k?.label ?? n[0]?.label ?? "", y = (w) => {
652
+ l === void 0 && b(w), d?.(w), u(!1);
628
653
  };
629
- return /* @__PURE__ */ o("div", { className: v, children: [
630
- /* @__PURE__ */ o("button", { "aria-controls": g, "aria-expanded": d, className: "game-ui-language-trigger", onClick: () => u((w) => !w), type: "button", children: [
654
+ return /* @__PURE__ */ o("div", { className: f, children: [
655
+ /* @__PURE__ */ o("button", { "aria-controls": g, "aria-expanded": r, className: "game-ui-language-trigger", onClick: () => u((w) => !w), type: "button", children: [
631
656
  /* @__PURE__ */ e(L, { icon: "globe", size: "sm" }),
632
657
  /* @__PURE__ */ e("span", { children: p })
633
658
  ] }),
634
- d ? /* @__PURE__ */ e("div", { "aria-label": i, className: "game-ui-language-popover", id: g, role: "menu", children: l.map((w) => /* @__PURE__ */ e(
659
+ r ? /* @__PURE__ */ e("div", { "aria-label": i, className: "game-ui-language-popover", id: g, role: "menu", children: n.map((w) => /* @__PURE__ */ e(
635
660
  "button",
636
661
  {
637
- "aria-checked": w.id === y,
638
- "data-selected": w.id === y,
639
- onClick: () => f(w.id),
662
+ "aria-checked": w.id === v,
663
+ "data-selected": w.id === v,
664
+ onClick: () => y(w.id),
640
665
  role: "menuitemradio",
641
666
  type: "button",
642
667
  children: /* @__PURE__ */ o("span", { children: [
@@ -654,13 +679,13 @@ function Se({ label: a, tone: t = "loading" }) {
654
679
  /* @__PURE__ */ e("span", { children: a })
655
680
  ] });
656
681
  }
657
- function Ei() {
658
- return V.catalog;
682
+ function Mi() {
683
+ return H.catalog;
659
684
  }
660
- function z({ fallback: a, slot: t }) {
685
+ function V({ fallback: a, slot: t }) {
661
686
  return t ?? /* @__PURE__ */ e(L, { icon: a, size: "sm" });
662
687
  }
663
- function La({ authenticated: a, batteryCount: t, className: i, dailyStreak: l, iconSlots: n, labels: s, onHistory: r, onSettings: d, onWardrobe: u, playerName: c }) {
688
+ function Ca({ authenticated: a, batteryCount: t, className: i, dailyStreak: n, iconSlots: l, labels: s, onHistory: d, onSettings: r, onWardrobe: u, playerName: c }) {
664
689
  const b = ["swimmer-first-session-shell", i].filter(Boolean).join(" "), g = a ? `${t} 🔋` : s.guest ?? "guest";
665
690
  return /* @__PURE__ */ o("section", { "aria-label": s.shell, className: b, children: [
666
691
  /* @__PURE__ */ e(
@@ -670,21 +695,21 @@ function La({ authenticated: a, batteryCount: t, className: i, dailyStreak: l, i
670
695
  items: [
671
696
  { icon: "crown", id: "role", label: s.roleLabel, meta: c, value: s.roleValue },
672
697
  { icon: "portal", id: "room", label: s.roomLabel, meta: g, value: s.roomValue },
673
- { icon: "trophy", id: "goal", label: s.goalLabel, meta: `${s.streak ?? "Daily"} ${l}`, value: s.goalValue },
698
+ { icon: "trophy", id: "goal", label: s.goalLabel, meta: `${s.streak ?? "Daily"} ${n}`, value: s.goalValue },
674
699
  { icon: "timer", id: "timer", label: s.timerLabel, value: s.timerValue }
675
700
  ],
676
701
  label: s.hud,
677
702
  actions: /* @__PURE__ */ o(K, { className: "swimmer-first-session-hud-actions", label: s.tools, children: [
678
703
  /* @__PURE__ */ o(C, { "aria-label": s.wardrobe, onClick: u, variant: "secondary", children: [
679
- /* @__PURE__ */ e(z, { fallback: "shirt", slot: n?.wardrobe }),
704
+ /* @__PURE__ */ e(V, { fallback: "shirt", slot: l?.wardrobe }),
680
705
  s.wardrobe
681
706
  ] }),
682
- /* @__PURE__ */ o(C, { "aria-label": s.settings, onClick: d, variant: "secondary", children: [
683
- /* @__PURE__ */ e(z, { fallback: "settings", slot: n?.settings }),
707
+ /* @__PURE__ */ o(C, { "aria-label": s.settings, onClick: r, variant: "secondary", children: [
708
+ /* @__PURE__ */ e(V, { fallback: "settings", slot: l?.settings }),
684
709
  s.settings
685
710
  ] }),
686
- /* @__PURE__ */ o(C, { "aria-label": s.history, onClick: r, variant: "secondary", children: [
687
- /* @__PURE__ */ e(z, { fallback: "history", slot: n?.history }),
711
+ /* @__PURE__ */ o(C, { "aria-label": s.history, onClick: d, variant: "secondary", children: [
712
+ /* @__PURE__ */ e(V, { fallback: "history", slot: l?.history }),
688
713
  s.history
689
714
  ] })
690
715
  ] })
@@ -697,17 +722,17 @@ function La({ authenticated: a, batteryCount: t, className: i, dailyStreak: l, i
697
722
  /* @__PURE__ */ e("strong", { children: s.move })
698
723
  ] }),
699
724
  /* @__PURE__ */ o("label", { className: "swimmer-first-session-input", children: [
700
- /* @__PURE__ */ e(z, { fallback: "chat", slot: n?.input }),
725
+ /* @__PURE__ */ e(V, { fallback: "chat", slot: l?.input }),
701
726
  /* @__PURE__ */ e("span", { children: s.input })
702
727
  ] }),
703
728
  /* @__PURE__ */ o("button", { className: "swimmer-first-session-emote", type: "button", children: [
704
- /* @__PURE__ */ e(z, { fallback: "smile", slot: n?.emote }),
729
+ /* @__PURE__ */ e(V, { fallback: "smile", slot: l?.emote }),
705
730
  s.emote
706
731
  ] })
707
732
  ] })
708
733
  ] });
709
734
  }
710
- function Ta({ labels: a, onDismiss: t, open: i }) {
735
+ function Aa({ labels: a, onDismiss: t, open: i }) {
711
736
  return i ? /* @__PURE__ */ o("aside", { "aria-labelledby": "swimmer-first-session-onboarding-title", "aria-modal": "true", className: "swimmer-first-session-onboarding", role: "dialog", children: [
712
737
  /* @__PURE__ */ e("div", { className: "swimmer-first-session-onboarding-scrim" }),
713
738
  /* @__PURE__ */ o("div", { className: "swimmer-first-session-onboarding-card", children: [
@@ -715,11 +740,11 @@ function Ta({ labels: a, onDismiss: t, open: i }) {
715
740
  /* @__PURE__ */ e(S, { tone: "warning", children: a.badge }),
716
741
  /* @__PURE__ */ e("h2", { id: "swimmer-first-session-onboarding-title", children: a.title }),
717
742
  /* @__PURE__ */ e("p", { children: a.body }),
718
- /* @__PURE__ */ e("ol", { className: "swimmer-first-session-onboarding-steps", children: a.steps.map((l, n) => /* @__PURE__ */ o("li", { children: [
719
- /* @__PURE__ */ e("span", { children: String(n + 1).padStart(2, "0") }),
720
- /* @__PURE__ */ e("strong", { children: l.title }),
721
- /* @__PURE__ */ e("small", { children: l.body })
722
- ] }, l.title)) }),
743
+ /* @__PURE__ */ e("ol", { className: "swimmer-first-session-onboarding-steps", children: a.steps.map((n, l) => /* @__PURE__ */ o("li", { children: [
744
+ /* @__PURE__ */ e("span", { children: String(l + 1).padStart(2, "0") }),
745
+ /* @__PURE__ */ e("strong", { children: n.title }),
746
+ /* @__PURE__ */ e("small", { children: n.body })
747
+ ] }, n.title)) }),
723
748
  /* @__PURE__ */ o("div", { className: "swimmer-first-session-onboarding-actions", children: [
724
749
  /* @__PURE__ */ e(C, { onClick: t, variant: "primary", children: a.start }),
725
750
  /* @__PURE__ */ e(C, { onClick: t, variant: "ghost", children: a.skip })
@@ -727,73 +752,73 @@ function Ta({ labels: a, onDismiss: t, open: i }) {
727
752
  ] })
728
753
  ] }) : null;
729
754
  }
730
- const Le = Oe(function({ className: t, invalid: i, type: l = "text", ...n }, s) {
731
- const r = ["game-ui-input", t].filter(Boolean).join(" ");
732
- return /* @__PURE__ */ e("input", { className: r, "data-invalid": i ? "true" : void 0, ref: s, type: l, ...n });
733
- }), Ca = Oe(function({ className: t, invalid: i, rows: l = 3, ...n }, s) {
734
- const r = ["game-ui-input", "game-ui-textarea", t].filter(Boolean).join(" ");
735
- return /* @__PURE__ */ e("textarea", { className: r, "data-invalid": i ? "true" : void 0, ref: s, rows: l, ...n });
755
+ const Le = Oe(function({ className: t, invalid: i, type: n = "text", ...l }, s) {
756
+ const d = ["game-ui-input", t].filter(Boolean).join(" ");
757
+ return /* @__PURE__ */ e("input", { className: d, "data-invalid": i ? "true" : void 0, ref: s, type: n, ...l });
758
+ }), Ba = Oe(function({ className: t, invalid: i, rows: n = 3, ...l }, s) {
759
+ const d = ["game-ui-input", "game-ui-textarea", t].filter(Boolean).join(" ");
760
+ return /* @__PURE__ */ e("textarea", { className: d, "data-invalid": i ? "true" : void 0, ref: s, rows: n, ...l });
736
761
  });
737
- function H({ children: a, className: t, error: i, hint: l, label: n, required: s }) {
738
- const r = ["game-ui-field", t].filter(Boolean).join(" ");
739
- return /* @__PURE__ */ o("label", { className: r, "data-invalid": i ? "true" : void 0, children: [
762
+ function D({ children: a, className: t, error: i, hint: n, label: l, required: s }) {
763
+ const d = ["game-ui-field", t].filter(Boolean).join(" ");
764
+ return /* @__PURE__ */ o("label", { className: d, "data-invalid": i ? "true" : void 0, children: [
740
765
  /* @__PURE__ */ o("span", { className: "game-ui-field-label", children: [
741
- n,
766
+ l,
742
767
  s ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-field-required", children: " *" }) : null
743
768
  ] }),
744
769
  a,
745
- l && !i ? /* @__PURE__ */ e("span", { className: "game-ui-field-hint", children: l }) : null,
770
+ n && !i ? /* @__PURE__ */ e("span", { className: "game-ui-field-hint", children: n }) : null,
746
771
  i ? /* @__PURE__ */ e("span", { className: "game-ui-field-error", role: "alert", children: i }) : null
747
772
  ] });
748
773
  }
749
- function Aa({ className: a, label: t, ...i }) {
750
- const l = ["game-ui-checkbox", a].filter(Boolean).join(" ");
751
- return /* @__PURE__ */ o("label", { className: l, children: [
774
+ function xa({ className: a, label: t, ...i }) {
775
+ const n = ["game-ui-checkbox", a].filter(Boolean).join(" ");
776
+ return /* @__PURE__ */ o("label", { className: n, children: [
752
777
  /* @__PURE__ */ e("input", { className: "game-ui-checkbox-input", type: "checkbox", ...i }),
753
778
  /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-checkbox-box" }),
754
779
  /* @__PURE__ */ e("span", { className: "game-ui-checkbox-label", children: t })
755
780
  ] });
756
781
  }
757
- function Ba(a) {
782
+ function Ia(a) {
758
783
  const t = a.trim().split(/\s+/).filter(Boolean);
759
- return t.length === 0 ? "?" : t.slice(0, 2).map((l) => l[0] ?? "").join("").toUpperCase();
784
+ return t.length === 0 ? "?" : t.slice(0, 2).map((n) => n[0] ?? "").join("").toUpperCase();
760
785
  }
761
- function $({ className: a, name: t, size: i = "md", src: l, status: n = "none" }) {
786
+ function j({ className: a, name: t, size: i = "md", src: n, status: l = "none" }) {
762
787
  const s = ["game-ui-avatar", a].filter(Boolean).join(" ");
763
- return /* @__PURE__ */ o("span", { className: s, "data-avatar-size": i, "data-avatar-status": n, children: [
764
- l ? /* @__PURE__ */ e("img", { alt: t, src: l }) : /* @__PURE__ */ o(Ge, { children: [
765
- /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-avatar-initials", children: Ba(t) }),
788
+ return /* @__PURE__ */ o("span", { className: s, "data-avatar-size": i, "data-avatar-status": l, children: [
789
+ n ? /* @__PURE__ */ e("img", { alt: t, src: n }) : /* @__PURE__ */ o(Ge, { children: [
790
+ /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-avatar-initials", children: Ia(t) }),
766
791
  /* @__PURE__ */ e("span", { className: "game-ui-sr-only", children: t })
767
792
  ] }),
768
- n !== "none" ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-avatar-status" }) : null
793
+ l !== "none" ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-avatar-status" }) : null
769
794
  ] });
770
795
  }
771
- function D({ className: a, label: t, max: i = 100, showValue: l = !1, tone: n = "accent", value: s }) {
772
- const r = i <= 0 ? 100 : i, d = Math.max(0, Math.min(100, s / r * 100)), u = ["game-ui-progress", a].filter(Boolean).join(" ");
773
- return /* @__PURE__ */ o("div", { className: u, "data-progress-tone": n, children: [
796
+ function U({ className: a, label: t, max: i = 100, showValue: n = !1, tone: l = "accent", value: s }) {
797
+ const d = i <= 0 ? 100 : i, r = Math.max(0, Math.min(100, s / d * 100)), u = ["game-ui-progress", a].filter(Boolean).join(" ");
798
+ return /* @__PURE__ */ o("div", { className: u, "data-progress-tone": l, children: [
774
799
  /* @__PURE__ */ e(
775
800
  "div",
776
801
  {
777
802
  "aria-label": t,
778
- "aria-valuemax": r,
803
+ "aria-valuemax": d,
779
804
  "aria-valuemin": 0,
780
805
  "aria-valuenow": s,
781
806
  className: "game-ui-progress-track",
782
807
  role: "progressbar",
783
- children: /* @__PURE__ */ e("div", { className: "game-ui-progress-fill", style: { width: `${d}%` } })
808
+ children: /* @__PURE__ */ e("div", { className: "game-ui-progress-fill", style: { width: `${r}%` } })
784
809
  }
785
810
  ),
786
- l ? /* @__PURE__ */ o("span", { className: "game-ui-progress-value", children: [
787
- Math.round(d),
811
+ n ? /* @__PURE__ */ o("span", { className: "game-ui-progress-value", children: [
812
+ Math.round(r),
788
813
  "%"
789
814
  ] }) : null
790
815
  ] });
791
816
  }
792
- function P({ action: a, className: t, description: i, icon: l, title: n }) {
817
+ function P({ action: a, className: t, description: i, icon: n, title: l }) {
793
818
  const s = ["game-ui-empty-state", t].filter(Boolean).join(" ");
794
819
  return /* @__PURE__ */ o("div", { className: s, children: [
795
- l ? /* @__PURE__ */ e(L, { icon: l, size: "xl" }) : null,
796
- /* @__PURE__ */ e("strong", { className: "game-ui-empty-state-title", children: n }),
820
+ n ? /* @__PURE__ */ e(L, { icon: n, size: "xl" }) : null,
821
+ /* @__PURE__ */ e("strong", { className: "game-ui-empty-state-title", children: l }),
797
822
  i ? /* @__PURE__ */ e("p", { className: "game-ui-empty-state-body", children: i }) : null,
798
823
  a ? /* @__PURE__ */ e("div", { className: "game-ui-empty-state-action", children: a }) : null
799
824
  ] });
@@ -802,84 +827,84 @@ function He({
802
827
  assetLibrary: a,
803
828
  bottomBar: t,
804
829
  children: i,
805
- className: l,
806
- density: n = "comfortable",
830
+ className: n,
831
+ density: l = "comfortable",
807
832
  hud: s,
808
- layout: r = "auto",
809
- movementPad: d,
833
+ layout: d = "auto",
834
+ movementPad: r,
810
835
  overlay: u,
811
836
  sidePanel: c,
812
837
  title: b
813
838
  }) {
814
- const g = ["game-ui-shell", l].filter(Boolean).join(" ");
815
- return /* @__PURE__ */ o("section", { "aria-label": b, className: g, "data-density": n, "data-layout": r, children: [
839
+ const g = ["game-ui-shell", n].filter(Boolean).join(" ");
840
+ return /* @__PURE__ */ o("section", { "aria-label": b, className: g, "data-density": l, "data-layout": d, children: [
816
841
  /* @__PURE__ */ e("div", { className: "game-ui-shell-scene", children: i }),
817
842
  s ? /* @__PURE__ */ e("div", { className: "game-ui-shell-hud", children: s }) : null,
818
843
  a ? /* @__PURE__ */ e("aside", { className: "game-ui-shell-library", children: a }) : null,
819
844
  c ? /* @__PURE__ */ e("aside", { className: "game-ui-shell-side-panel", children: c }) : null,
820
- d ? /* @__PURE__ */ e("div", { className: "game-ui-shell-movement", children: d }) : null,
845
+ r ? /* @__PURE__ */ e("div", { className: "game-ui-shell-movement", children: r }) : null,
821
846
  t ? /* @__PURE__ */ e("div", { className: "game-ui-shell-bottom-bar", children: t }) : null,
822
847
  u ? /* @__PURE__ */ e("div", { className: "game-ui-shell-overlay", children: u }) : null
823
848
  ] });
824
849
  }
825
- const Ri = He;
826
- function ve({ className: a, density: t = "comfortable", facts: i, label: l, variant: n = "facts" }) {
850
+ const Gi = He;
851
+ function ve({ className: a, density: t = "comfortable", facts: i, label: n, variant: l = "facts" }) {
827
852
  const s = ["game-ui-fact-list", a].filter(Boolean).join(" ");
828
- return /* @__PURE__ */ e("section", { "aria-label": l, className: s, "data-density": t, "data-variant": n, children: i.map((r) => /* @__PURE__ */ o("article", { className: "game-ui-fact", children: [
829
- r.icon ? /* @__PURE__ */ e(L, { icon: r.icon, size: t === "dense" ? "sm" : "md" }) : null,
853
+ return /* @__PURE__ */ e("section", { "aria-label": n, className: s, "data-density": t, "data-variant": l, children: i.map((d) => /* @__PURE__ */ o("article", { className: "game-ui-fact", children: [
854
+ d.icon ? /* @__PURE__ */ e(L, { icon: d.icon, size: t === "dense" ? "sm" : "md" }) : null,
830
855
  /* @__PURE__ */ o("span", { className: "game-ui-fact-copy", children: [
831
- /* @__PURE__ */ e("small", { children: r.label }),
832
- /* @__PURE__ */ e("strong", { children: r.value }),
833
- r.meta ? /* @__PURE__ */ e("em", { children: r.meta }) : null
856
+ /* @__PURE__ */ e("small", { children: d.label }),
857
+ /* @__PURE__ */ e("strong", { children: d.value }),
858
+ d.meta ? /* @__PURE__ */ e("em", { children: d.meta }) : null
834
859
  ] }),
835
- r.tone ? /* @__PURE__ */ e(S, { tone: r.tone, children: n === "stats" ? r.label : r.value }) : null
836
- ] }, r.id)) });
860
+ d.tone ? /* @__PURE__ */ e(S, { tone: d.tone, children: l === "stats" ? d.label : d.value }) : null
861
+ ] }, d.id)) });
837
862
  }
838
- const Mi = ve;
839
- function U({ actions: a, className: t, density: i = "comfortable", iconLabelMode: l = "hidden", label: n, style: s = "button" }) {
840
- const r = ["game-ui-action-grid", t].filter(Boolean).join(" ");
841
- return /* @__PURE__ */ o(K, { className: r, "data-icon-label-mode": s === "icon" ? l : void 0, label: n, children: [
842
- /* @__PURE__ */ e("span", { className: "game-ui-sr-only", children: n }),
843
- a.map((d) => {
844
- const u = d.compactLabel ?? d.label, c = /* @__PURE__ */ o(Ge, { children: [
845
- d.icon ? /* @__PURE__ */ e(L, { icon: d.icon, size: i === "dense" ? "sm" : "md", ...s === "icon" ? { style: "line" } : {} }) : null,
846
- s === "button" ? /* @__PURE__ */ e("span", { children: d.label }) : null,
847
- s === "icon" && l === "caption" ? /* @__PURE__ */ e("span", { className: "game-ui-action-grid-caption", children: u }) : null,
848
- d.badge ? /* @__PURE__ */ e(S, { tone: d.selected ? "success" : "neutral", children: d.badge }) : null,
849
- d.shortcut ? /* @__PURE__ */ e("kbd", { children: d.shortcut }) : null
850
- ] }), b = () => d.onAction?.(d.id);
863
+ const Oi = ve;
864
+ function $({ actions: a, className: t, density: i = "comfortable", iconLabelMode: n = "hidden", label: l, style: s = "button" }) {
865
+ const d = ["game-ui-action-grid", t].filter(Boolean).join(" ");
866
+ return /* @__PURE__ */ o(K, { className: d, "data-icon-label-mode": s === "icon" ? n : void 0, label: l, children: [
867
+ /* @__PURE__ */ e("span", { className: "game-ui-sr-only", children: l }),
868
+ a.map((r) => {
869
+ const u = r.compactLabel ?? r.label, c = /* @__PURE__ */ o(Ge, { children: [
870
+ r.icon ? /* @__PURE__ */ e(L, { icon: r.icon, size: i === "dense" ? "sm" : "md", ...s === "icon" ? { style: "line" } : {} }) : null,
871
+ s === "button" ? /* @__PURE__ */ e("span", { children: r.label }) : null,
872
+ s === "icon" && n === "caption" ? /* @__PURE__ */ e("span", { className: "game-ui-action-grid-caption", children: u }) : null,
873
+ r.badge ? /* @__PURE__ */ e(S, { tone: r.selected ? "success" : "neutral", children: r.badge }) : null,
874
+ r.shortcut ? /* @__PURE__ */ e("kbd", { children: r.shortcut }) : null
875
+ ] }), b = () => r.onAction?.(r.id);
851
876
  return s === "icon" ? /* @__PURE__ */ e(
852
877
  O,
853
878
  {
854
- "aria-pressed": d.selected,
879
+ "aria-pressed": r.selected,
855
880
  className: "game-ui-action-grid-button",
856
- disabled: d.disabled,
857
- label: d.ariaLabel ?? d.label,
881
+ disabled: r.disabled,
882
+ label: r.ariaLabel ?? r.label,
858
883
  onClick: b,
859
884
  children: c
860
885
  },
861
- d.id
886
+ r.id
862
887
  ) : /* @__PURE__ */ e(
863
888
  C,
864
889
  {
865
- "aria-pressed": d.selected,
890
+ "aria-pressed": r.selected,
866
891
  className: "game-ui-action-grid-button",
867
- disabled: d.disabled,
892
+ disabled: r.disabled,
868
893
  onClick: b,
869
- variant: d.tone ?? "secondary",
894
+ variant: r.tone ?? "secondary",
870
895
  children: c
871
896
  },
872
- d.id
897
+ r.id
873
898
  );
874
899
  })
875
900
  ] });
876
901
  }
877
- const xa = [
902
+ const Ea = [
878
903
  { direction: "forward", label: "Move forward", shortcut: "W / ↑", symbol: "↑" },
879
904
  { direction: "left", label: "Move left", shortcut: "A / ←", symbol: "←" },
880
905
  { direction: "right", label: "Move right", shortcut: "D / →", symbol: "→" },
881
906
  { direction: "backward", label: "Move backward", shortcut: "S / ↓", symbol: "↓" }
882
- ], Ia = {
907
+ ], Ra = {
883
908
  ArrowUp: "forward",
884
909
  w: "forward",
885
910
  W: "forward",
@@ -894,31 +919,31 @@ const xa = [
894
919
  S: "backward",
895
920
  " ": "reset"
896
921
  };
897
- function Ea({
898
- actions: a = xa,
922
+ function Ma({
923
+ actions: a = Ea,
899
924
  className: t,
900
925
  density: i = "comfortable",
901
- disabled: l = !1,
902
- helpText: n,
926
+ disabled: n = !1,
927
+ helpText: l,
903
928
  label: s,
904
- layout: r = "dpad",
905
- onMove: d
929
+ layout: d = "dpad",
930
+ onMove: r
906
931
  }) {
907
932
  const u = ["game-ui-movement-pad", t].filter(Boolean).join(" "), c = (g) => {
908
- l || d?.(g);
933
+ n || r?.(g);
909
934
  };
910
- return /* @__PURE__ */ o("section", { "aria-label": s, className: u, "data-density": i, "data-layout": r, onKeyDown: (g) => {
911
- const v = Ia[g.key];
912
- if (!v) return;
913
- const y = a.find((k) => k.direction === v);
914
- !y || y.disabled || l || (g.preventDefault(), c(v));
935
+ return /* @__PURE__ */ o("section", { "aria-label": s, className: u, "data-density": i, "data-layout": d, onKeyDown: (g) => {
936
+ const f = Ra[g.key];
937
+ if (!f) return;
938
+ const v = a.find((k) => k.direction === f);
939
+ !v || v.disabled || n || (g.preventDefault(), c(f));
915
940
  }, tabIndex: 0, children: [
916
941
  /* @__PURE__ */ e("div", { className: "game-ui-movement-pad-grid", children: a.map((g) => /* @__PURE__ */ o(
917
942
  O,
918
943
  {
919
944
  className: "game-ui-movement-button",
920
945
  "data-direction": g.direction,
921
- disabled: l || g.disabled,
946
+ disabled: n || g.disabled,
922
947
  label: g.label,
923
948
  onClick: () => c(g.direction),
924
949
  children: [
@@ -928,7 +953,7 @@ function Ea({
928
953
  },
929
954
  g.direction
930
955
  )) }),
931
- n ? /* @__PURE__ */ e("p", { children: n }) : null
956
+ l ? /* @__PURE__ */ e("p", { children: l }) : null
932
957
  ] });
933
958
  }
934
959
  const X = {
@@ -939,7 +964,7 @@ const X = {
939
964
  generated: "ai",
940
965
  imported: "warning",
941
966
  starter: "neutral"
942
- }, Ra = {
967
+ }, Ga = {
943
968
  error: "danger",
944
969
  generating: "ai",
945
970
  missing: "danger",
@@ -947,38 +972,38 @@ const X = {
947
972
  ready: "neutral",
948
973
  selected: "success"
949
974
  };
950
- function Ma({
975
+ function Oa({
951
976
  assetId: a,
952
977
  badges: t = [],
953
978
  cardLayout: i = "list",
954
- className: l,
955
- description: n,
979
+ className: n,
980
+ description: l,
956
981
  disabled: s,
957
- facts: r = [],
958
- icon: d = "gem",
982
+ facts: d = [],
983
+ icon: r = "gem",
959
984
  onClick: u,
960
985
  onSelect: c,
961
986
  selected: b = !1,
962
987
  source: g,
963
- sourceLabel: v,
964
- status: y = "ready",
988
+ sourceLabel: f,
989
+ status: v = "ready",
965
990
  statusLabel: k,
966
991
  thumbnailAlt: p = "",
967
- thumbnailSrc: f,
992
+ thumbnailSrc: y,
968
993
  title: w,
969
994
  type: h = "button",
970
995
  ...A
971
996
  }) {
972
- const { "aria-label": T, ...G } = A, _ = ["game-ui-asset-card", l].filter(Boolean).join(" "), x = v ?? X[g], E = k ?? y;
997
+ const { "aria-label": T, ...G } = A, z = ["game-ui-asset-card", n].filter(Boolean).join(" "), x = f ?? X[g], E = k ?? v;
973
998
  return /* @__PURE__ */ o(
974
999
  "button",
975
1000
  {
976
1001
  "aria-label": T ?? w,
977
1002
  "aria-pressed": b,
978
- className: _,
1003
+ className: z,
979
1004
  "data-asset-card-layout": i,
980
1005
  "data-asset-source": g,
981
- "data-asset-status": y,
1006
+ "data-asset-status": v,
982
1007
  disabled: s,
983
1008
  onClick: (I) => {
984
1009
  u?.(I), I.defaultPrevented || c?.(a);
@@ -986,16 +1011,16 @@ function Ma({
986
1011
  type: h,
987
1012
  ...G,
988
1013
  children: [
989
- /* @__PURE__ */ e("span", { className: "game-ui-asset-card-preview", children: f ? /* @__PURE__ */ e("img", { alt: p, src: f }) : /* @__PURE__ */ e(L, { className: "game-ui-asset-card-icon", icon: d, size: "xl" }) }),
1014
+ /* @__PURE__ */ e("span", { className: "game-ui-asset-card-preview", children: y ? /* @__PURE__ */ e("img", { alt: p, src: y }) : /* @__PURE__ */ e(L, { className: "game-ui-asset-card-icon", icon: r, size: "xl" }) }),
990
1015
  /* @__PURE__ */ o("span", { className: "game-ui-asset-card-copy", children: [
991
1016
  /* @__PURE__ */ o("span", { className: "game-ui-asset-card-badges", children: [
992
1017
  /* @__PURE__ */ e(S, { tone: Q[g], children: x }),
993
- /* @__PURE__ */ e(S, { tone: Ra[y], children: E }),
1018
+ /* @__PURE__ */ e(S, { tone: Ga[v], children: E }),
994
1019
  t.map((I) => /* @__PURE__ */ e(S, { tone: I.tone ?? "neutral", children: I.label }, I.label))
995
1020
  ] }),
996
1021
  /* @__PURE__ */ e("strong", { children: w }),
997
- n ? /* @__PURE__ */ e("span", { children: n }) : null,
998
- r.length > 0 ? /* @__PURE__ */ e("span", { className: "game-ui-asset-card-facts", children: r.map((I) => /* @__PURE__ */ o("span", { children: [
1022
+ l ? /* @__PURE__ */ e("span", { children: l }) : null,
1023
+ d.length > 0 ? /* @__PURE__ */ e("span", { className: "game-ui-asset-card-facts", children: d.map((I) => /* @__PURE__ */ o("span", { children: [
999
1024
  /* @__PURE__ */ e("small", { children: I.label }),
1000
1025
  /* @__PURE__ */ e("b", { children: I.value })
1001
1026
  ] }, I.id)) }) : null
@@ -1008,42 +1033,42 @@ function De({
1008
1033
  cardLayout: a = "auto",
1009
1034
  className: t,
1010
1035
  density: i = "comfortable",
1011
- emptyAction: l,
1012
- emptyDescription: n = "Assets will appear here when they are ready to place.",
1036
+ emptyAction: n,
1037
+ emptyDescription: l = "Assets will appear here when they are ready to place.",
1013
1038
  emptyTitle: s = "No assets ready",
1014
- groups: r,
1015
- label: d,
1039
+ groups: d,
1040
+ label: r,
1016
1041
  onSelectAsset: u,
1017
1042
  selectedAssetId: c,
1018
1043
  subtitle: b,
1019
1044
  title: g
1020
1045
  }) {
1021
- const v = ["game-ui-asset-library", t].filter(Boolean).join(" "), y = r.reduce((p, f) => p + f.assets.length, 0), k = r.reduce((p, f) => (f.assets.forEach((w) => {
1046
+ const f = ["game-ui-asset-library", t].filter(Boolean).join(" "), v = d.reduce((p, y) => p + y.assets.length, 0), k = d.reduce((p, y) => (y.assets.forEach((w) => {
1022
1047
  p[w.source] += 1;
1023
1048
  }), p), { generated: 0, imported: 0, starter: 0 });
1024
- return /* @__PURE__ */ e(B, { className: v, "data-card-layout": a, title: g, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": d, "data-density": i, children: [
1049
+ return /* @__PURE__ */ e(B, { className: f, "data-card-layout": a, title: g, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": r, "data-density": i, children: [
1025
1050
  b ? /* @__PURE__ */ e("p", { className: "game-ui-asset-library-subtitle", children: b }) : null,
1026
- /* @__PURE__ */ e("div", { "aria-label": "Asset source counts", className: "game-ui-asset-library-counts", children: Object.entries(k).map(([p, f]) => /* @__PURE__ */ o(S, { tone: Q[p], children: [
1051
+ /* @__PURE__ */ e("div", { "aria-label": "Asset source counts", className: "game-ui-asset-library-counts", children: Object.entries(k).map(([p, y]) => /* @__PURE__ */ o(S, { tone: Q[p], children: [
1027
1052
  X[p],
1028
1053
  " ",
1029
- f
1054
+ y
1030
1055
  ] }, p)) }),
1031
- y === 0 ? /* @__PURE__ */ e(P, { action: l, description: n, icon: "gem", title: s }) : /* @__PURE__ */ e("div", { className: "game-ui-asset-library-groups", children: r.map((p) => /* @__PURE__ */ o("section", { "aria-label": p.label, className: "game-ui-asset-library-group", "data-asset-source": p.source, children: [
1056
+ v === 0 ? /* @__PURE__ */ e(P, { action: n, description: l, icon: "gem", title: s }) : /* @__PURE__ */ e("div", { className: "game-ui-asset-library-groups", children: d.map((p) => /* @__PURE__ */ o("section", { "aria-label": p.label, className: "game-ui-asset-library-group", "data-asset-source": p.source, children: [
1032
1057
  /* @__PURE__ */ o("header", { children: [
1033
1058
  /* @__PURE__ */ e("strong", { children: p.label }),
1034
1059
  p.source ? /* @__PURE__ */ e(S, { tone: Q[p.source], children: X[p.source] }) : null
1035
1060
  ] }),
1036
- /* @__PURE__ */ e("div", { className: "game-ui-asset-library-grid", children: p.assets.map((f) => {
1037
- const w = a === "auto" ? f.cardLayout : a;
1061
+ /* @__PURE__ */ e("div", { className: "game-ui-asset-library-grid", children: p.assets.map((y) => {
1062
+ const w = a === "auto" ? y.cardLayout : a;
1038
1063
  return /* @__PURE__ */ e(
1039
- Ma,
1064
+ Oa,
1040
1065
  {
1041
- ...f,
1066
+ ...y,
1042
1067
  ...w ? { cardLayout: w } : {},
1043
1068
  ...u ? { onSelect: u } : {},
1044
- selected: f.assetId === c
1069
+ selected: y.assetId === c
1045
1070
  },
1046
- f.assetId
1071
+ y.assetId
1047
1072
  );
1048
1073
  }) })
1049
1074
  ] }, p.id)) })
@@ -1053,29 +1078,29 @@ function Ue({
1053
1078
  actions: a = [],
1054
1079
  capacityLabel: t = "Objects",
1055
1080
  className: i,
1056
- density: l = "comfortable",
1057
- maxObjects: n,
1081
+ density: n = "comfortable",
1082
+ maxObjects: l,
1058
1083
  objectActions: s = [],
1059
- placedObjects: r,
1060
- selectedLabel: d = "Selected",
1084
+ placedObjects: d,
1085
+ selectedLabel: r = "Selected",
1061
1086
  selectedTitle: u,
1062
1087
  statusLabel: c = "Status",
1063
1088
  statusTone: b = "neutral",
1064
1089
  statusValue: g = "Idle",
1065
- title: v
1090
+ title: f
1066
1091
  }) {
1067
- const y = ["game-ui-placement-toolbar", i].filter(Boolean).join(" "), k = typeof r == "number" && typeof n == "number", p = k && n > 0 ? Math.min(n, r) : 0;
1068
- return /* @__PURE__ */ e(B, { className: y, title: v, tone: "strong", children: /* @__PURE__ */ o("div", { "data-density": l, children: [
1069
- /* @__PURE__ */ e(ve, { density: l, facts: [
1070
- { icon: "gem", id: "selected", label: d, value: u ?? "None" },
1092
+ const v = ["game-ui-placement-toolbar", i].filter(Boolean).join(" "), k = typeof d == "number" && typeof l == "number", p = k && l > 0 ? Math.min(l, d) : 0;
1093
+ return /* @__PURE__ */ e(B, { className: v, title: f, tone: "strong", children: /* @__PURE__ */ o("div", { "data-density": n, children: [
1094
+ /* @__PURE__ */ e(ve, { density: n, facts: [
1095
+ { icon: "gem", id: "selected", label: r, value: u ?? "None" },
1071
1096
  { icon: "check", id: "status", label: c, tone: b, value: g }
1072
- ], label: `${v} facts` }),
1073
- k ? /* @__PURE__ */ e(D, { label: t, max: n, showValue: !0, tone: p >= n ? "warning" : "success", value: p }) : null,
1074
- a.length > 0 ? /* @__PURE__ */ e(U, { actions: a, density: l, label: `${v} actions` }) : null,
1075
- s.length > 0 ? /* @__PURE__ */ e(U, { actions: s, density: l, label: `${v} object actions`, style: "icon" }) : null
1097
+ ], label: `${f} facts` }),
1098
+ k ? /* @__PURE__ */ e(U, { label: t, max: l, showValue: !0, tone: p >= l ? "warning" : "success", value: p }) : null,
1099
+ a.length > 0 ? /* @__PURE__ */ e($, { actions: a, density: n, label: `${f} actions` }) : null,
1100
+ s.length > 0 ? /* @__PURE__ */ e($, { actions: s, density: n, label: `${f} object actions`, style: "icon" }) : null
1076
1101
  ] }) });
1077
1102
  }
1078
- const Gi = Ue, fe = {
1103
+ const Pi = Ue, fe = {
1079
1104
  build: "home",
1080
1105
  flatten: "card",
1081
1106
  inspect: "compass",
@@ -1085,7 +1110,7 @@ const Gi = Ue, fe = {
1085
1110
  raise: "energy",
1086
1111
  smooth: "lucky",
1087
1112
  terrain: "portal"
1088
- }, Ga = {
1113
+ }, Pa = {
1089
1114
  error: "danger",
1090
1115
  locked: "warning",
1091
1116
  missing: "danger",
@@ -1093,38 +1118,38 @@ const Gi = Ue, fe = {
1093
1118
  ready: "neutral",
1094
1119
  selected: "success"
1095
1120
  };
1096
- function Oa(a, t, i, l) {
1097
- const n = {
1098
- disabled: !!(l || a.disabled),
1121
+ function _a(a, t, i, n) {
1122
+ const l = {
1123
+ disabled: !!(n || a.disabled),
1099
1124
  icon: a.icon ?? fe[a.id] ?? "gem",
1100
1125
  id: a.id,
1101
1126
  label: a.label,
1102
1127
  selected: a.id === t,
1103
1128
  tone: a.id === t ? "primary" : "secondary"
1104
1129
  };
1105
- return a.ariaLabel && (n.ariaLabel = a.ariaLabel), a.compactLabel && (n.compactLabel = a.compactLabel), a.meta && (n.meta = a.meta), a.shortcut && (n.shortcut = a.shortcut), i && (n.onAction = i), n;
1130
+ return a.ariaLabel && (l.ariaLabel = a.ariaLabel), a.compactLabel && (l.compactLabel = a.compactLabel), a.meta && (l.meta = a.meta), a.shortcut && (l.shortcut = a.shortcut), i && (l.onAction = i), l;
1106
1131
  }
1107
- function j(a, t, i) {
1132
+ function F(a, t, i) {
1108
1133
  return Number.isNaN(a) ? t : Math.min(i, Math.max(t, a));
1109
1134
  }
1110
- function Pa(a, t) {
1135
+ function za(a, t) {
1111
1136
  return a !== "auto" ? a : t === "mobile" || t === "small-mobile" ? "caption" : "hidden";
1112
1137
  }
1113
- function _a({
1138
+ function Va({
1114
1139
  activeModeId: a,
1115
1140
  className: t,
1116
1141
  disabled: i = !1,
1117
- label: l,
1118
- modes: n,
1142
+ label: n,
1143
+ modes: l,
1119
1144
  onModeChange: s,
1120
- variant: r = "desktop",
1121
- "data-testid": d
1145
+ variant: d = "desktop",
1146
+ "data-testid": r
1122
1147
  }) {
1123
1148
  const u = ["game-ui-terrain-mode-control", t].filter(Boolean).join(" ");
1124
- return /* @__PURE__ */ o("section", { "aria-label": l, className: u, "data-ui-hook": "terrain-mode-control", "data-variant": r, "data-testid": d, children: [
1125
- /* @__PURE__ */ e("span", { className: "game-ui-sr-only", children: l }),
1126
- /* @__PURE__ */ e("div", { className: "game-ui-terrain-mode-options", role: "group", children: n.map((c) => {
1127
- const b = c.id === a, g = i || c.disabled, v = r === "small-mobile" ? c.compactLabel ?? c.label : c.label;
1149
+ return /* @__PURE__ */ o("section", { "aria-label": n, className: u, "data-ui-hook": "terrain-mode-control", "data-variant": d, "data-testid": r, children: [
1150
+ /* @__PURE__ */ e("span", { className: "game-ui-sr-only", children: n }),
1151
+ /* @__PURE__ */ e("div", { className: "game-ui-terrain-mode-options", role: "group", children: l.map((c) => {
1152
+ const b = c.id === a, g = i || c.disabled, f = d === "small-mobile" ? c.compactLabel ?? c.label : c.label;
1128
1153
  return /* @__PURE__ */ o(
1129
1154
  "button",
1130
1155
  {
@@ -1138,8 +1163,8 @@ function _a({
1138
1163
  onClick: s && !g ? () => s(c.id) : void 0,
1139
1164
  type: "button",
1140
1165
  children: [
1141
- /* @__PURE__ */ e(L, { icon: c.icon ?? fe[c.id] ?? "portal", size: r === "small-mobile" ? "sm" : "md", style: "line" }),
1142
- /* @__PURE__ */ e("span", { children: v }),
1166
+ /* @__PURE__ */ e(L, { icon: c.icon ?? fe[c.id] ?? "portal", size: d === "small-mobile" ? "sm" : "md", style: "line" }),
1167
+ /* @__PURE__ */ e("span", { children: f }),
1143
1168
  c.meta ? /* @__PURE__ */ e("small", { id: `${c.id}-mode-meta`, children: c.meta }) : null
1144
1169
  ]
1145
1170
  },
@@ -1148,52 +1173,52 @@ function _a({
1148
1173
  }) })
1149
1174
  ] });
1150
1175
  }
1151
- function za({
1176
+ function Ha({
1152
1177
  activeToolId: a,
1153
1178
  className: t,
1154
1179
  compactLabelMode: i = "auto",
1155
- density: l = "comfortable",
1156
- disabled: n = !1,
1180
+ density: n = "comfortable",
1181
+ disabled: l = !1,
1157
1182
  label: s,
1158
- onToolChange: r,
1159
- tools: d,
1183
+ onToolChange: d,
1184
+ tools: r,
1160
1185
  variant: u = "desktop",
1161
1186
  "data-testid": c
1162
1187
  }) {
1163
- const b = ["game-ui-terrain-tool-strip", t].filter(Boolean).join(" "), g = Pa(i, u);
1188
+ const b = ["game-ui-terrain-tool-strip", t].filter(Boolean).join(" "), g = za(i, u);
1164
1189
  return /* @__PURE__ */ e("section", { "aria-label": s, className: b, "data-active-tool": a, "data-icon-label-mode": g, "data-ui-hook": "terrain-tool-strip", "data-variant": u, "data-testid": c, children: /* @__PURE__ */ e(
1165
- U,
1190
+ $,
1166
1191
  {
1167
- actions: d.map((v) => Oa(v, a, r, n)),
1168
- density: l,
1192
+ actions: r.map((f) => _a(f, a, d, l)),
1193
+ density: n,
1169
1194
  iconLabelMode: g,
1170
1195
  label: s,
1171
1196
  style: u === "desktop" ? "button" : "icon"
1172
1197
  }
1173
1198
  ) });
1174
1199
  }
1175
- function Va({
1200
+ function Da({
1176
1201
  className: a,
1177
1202
  labels: t = {},
1178
1203
  onRadiusChange: i,
1179
- onStrengthChange: l,
1180
- state: n,
1204
+ onStrengthChange: n,
1205
+ state: l,
1181
1206
  variant: s = "desktop",
1182
- "data-testid": r
1207
+ "data-testid": d
1183
1208
  }) {
1184
- const d = ["game-ui-brush-controls", a].filter(Boolean).join(" "), u = n.minRadius ?? 1, c = n.maxRadius ?? 8, b = n.radiusStep ?? 0.25, g = n.minStrength ?? 0, v = n.maxStrength ?? 1, y = n.strengthStep ?? 0.05, k = j(n.radius, u, c), p = j(n.strength, g, v), f = !!n.disabled, w = (A) => {
1185
- i?.(j(Number(A.currentTarget.value), u, c));
1209
+ const r = ["game-ui-brush-controls", a].filter(Boolean).join(" "), u = l.minRadius ?? 1, c = l.maxRadius ?? 8, b = l.radiusStep ?? 0.25, g = l.minStrength ?? 0, f = l.maxStrength ?? 1, v = l.strengthStep ?? 0.05, k = F(l.radius, u, c), p = F(l.strength, g, f), y = !!l.disabled, w = (A) => {
1210
+ i?.(F(Number(A.currentTarget.value), u, c));
1186
1211
  }, h = (A) => {
1187
- l?.(j(Number(A.currentTarget.value), g, v));
1212
+ n?.(F(Number(A.currentTarget.value), g, f));
1188
1213
  };
1189
- return /* @__PURE__ */ o("section", { className: d, "data-ui-hook": "brush-controls", "data-variant": s, "data-testid": r, children: [
1190
- /* @__PURE__ */ e(H, { ...t.radiusHint ? { hint: t.radiusHint } : {}, label: t.radius ?? "Brush radius", children: /* @__PURE__ */ o("div", { className: "game-ui-brush-control-row", "data-control": "radius", children: [
1214
+ return /* @__PURE__ */ o("section", { className: r, "data-ui-hook": "brush-controls", "data-variant": s, "data-testid": d, children: [
1215
+ /* @__PURE__ */ e(D, { ...t.radiusHint ? { hint: t.radiusHint } : {}, label: t.radius ?? "Brush radius", children: /* @__PURE__ */ o("div", { className: "game-ui-brush-control-row", "data-control": "radius", children: [
1191
1216
  /* @__PURE__ */ e(
1192
1217
  "input",
1193
1218
  {
1194
1219
  "aria-label": t.radius ?? "Brush radius",
1195
1220
  className: "game-ui-brush-range",
1196
- disabled: f,
1221
+ disabled: y,
1197
1222
  max: c,
1198
1223
  min: u,
1199
1224
  onChange: i ? w : void 0,
@@ -1208,7 +1233,7 @@ function Va({
1208
1233
  {
1209
1234
  "aria-label": `${t.radius ?? "Brush radius"} value`,
1210
1235
  className: "game-ui-brush-number",
1211
- disabled: f,
1236
+ disabled: y,
1212
1237
  max: c,
1213
1238
  min: u,
1214
1239
  onChange: i ? w : void 0,
@@ -1219,18 +1244,18 @@ function Va({
1219
1244
  }
1220
1245
  )
1221
1246
  ] }) }),
1222
- /* @__PURE__ */ e(H, { ...t.strengthHint ? { hint: t.strengthHint } : {}, label: t.strength ?? "Brush strength", children: /* @__PURE__ */ o("div", { className: "game-ui-brush-control-row", "data-control": "strength", children: [
1247
+ /* @__PURE__ */ e(D, { ...t.strengthHint ? { hint: t.strengthHint } : {}, label: t.strength ?? "Brush strength", children: /* @__PURE__ */ o("div", { className: "game-ui-brush-control-row", "data-control": "strength", children: [
1223
1248
  /* @__PURE__ */ e(
1224
1249
  "input",
1225
1250
  {
1226
1251
  "aria-label": t.strength ?? "Brush strength",
1227
1252
  className: "game-ui-brush-range",
1228
- disabled: f,
1229
- max: v,
1253
+ disabled: y,
1254
+ max: f,
1230
1255
  min: g,
1231
- onChange: l ? h : void 0,
1232
- readOnly: !l,
1233
- step: y,
1256
+ onChange: n ? h : void 0,
1257
+ readOnly: !n,
1258
+ step: v,
1234
1259
  type: "range",
1235
1260
  value: p
1236
1261
  }
@@ -1240,12 +1265,12 @@ function Va({
1240
1265
  {
1241
1266
  "aria-label": `${t.strength ?? "Brush strength"} value`,
1242
1267
  className: "game-ui-brush-number",
1243
- disabled: f,
1244
- max: v,
1268
+ disabled: y,
1269
+ max: f,
1245
1270
  min: g,
1246
- onChange: l ? h : void 0,
1247
- readOnly: !l,
1248
- step: y,
1271
+ onChange: n ? h : void 0,
1272
+ readOnly: !n,
1273
+ step: v,
1249
1274
  type: "number",
1250
1275
  value: p
1251
1276
  }
@@ -1253,19 +1278,19 @@ function Va({
1253
1278
  ] }) })
1254
1279
  ] });
1255
1280
  }
1256
- function Ha({
1281
+ function Ua({
1257
1282
  activeMaterialId: a,
1258
1283
  className: t,
1259
1284
  disabled: i = !1,
1260
- label: l,
1261
- materials: n,
1285
+ label: n,
1286
+ materials: l,
1262
1287
  onMaterialChange: s,
1263
- variant: r = "desktop",
1264
- "data-testid": d
1288
+ variant: d = "desktop",
1289
+ "data-testid": r
1265
1290
  }) {
1266
1291
  const u = ["game-ui-material-swatches", t].filter(Boolean).join(" ");
1267
- return /* @__PURE__ */ e("section", { "aria-label": l, className: u, "data-ui-hook": "material-swatches", "data-variant": r, "data-testid": d, children: /* @__PURE__ */ e("div", { className: "game-ui-material-swatch-grid", role: "listbox", "aria-label": l, children: n.map((c) => {
1268
- const b = c.id === a, g = i || c.disabled, v = r === "small-mobile" ? c.compactLabel ?? c.label : c.label, y = {
1292
+ return /* @__PURE__ */ e("section", { "aria-label": n, className: u, "data-ui-hook": "material-swatches", "data-variant": d, "data-testid": r, children: /* @__PURE__ */ e("div", { className: "game-ui-material-swatch-grid", role: "listbox", "aria-label": n, children: l.map((c) => {
1293
+ const b = c.id === a, g = i || c.disabled, f = d === "small-mobile" ? c.compactLabel ?? c.label : c.label, v = {
1269
1294
  "--swatch-color": c.color,
1270
1295
  "--swatch-secondary-color": c.secondaryColor ?? c.color
1271
1296
  };
@@ -1282,9 +1307,9 @@ function Ha({
1282
1307
  role: "option",
1283
1308
  type: "button",
1284
1309
  children: [
1285
- /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-material-swatch-chip", "data-swatch-pattern": c.pattern ?? "solid", style: y }),
1310
+ /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-material-swatch-chip", "data-swatch-pattern": c.pattern ?? "solid", style: v }),
1286
1311
  /* @__PURE__ */ o("span", { className: "game-ui-material-swatch-copy", children: [
1287
- /* @__PURE__ */ e("strong", { children: v }),
1312
+ /* @__PURE__ */ e("strong", { children: f }),
1288
1313
  c.meta ? /* @__PURE__ */ e("small", { id: `${c.id}-material-meta`, children: c.meta }) : null
1289
1314
  ] })
1290
1315
  ]
@@ -1293,46 +1318,46 @@ function Ha({
1293
1318
  );
1294
1319
  }) }) });
1295
1320
  }
1296
- function Da({
1321
+ function $a({
1297
1322
  canRedo: a = !1,
1298
1323
  canUndo: t = !1,
1299
1324
  className: i,
1300
- disabled: l = !1,
1301
- label: n,
1325
+ disabled: n = !1,
1326
+ label: l,
1302
1327
  onRedo: s,
1303
- onUndo: r,
1304
- redoLabel: d = "Redo",
1328
+ onUndo: d,
1329
+ redoLabel: r = "Redo",
1305
1330
  undoLabel: u = "Undo",
1306
1331
  variant: c = "desktop",
1307
1332
  "data-testid": b
1308
1333
  }) {
1309
1334
  const g = ["game-ui-undo-redo-actions", i].filter(Boolean).join(" ");
1310
- return /* @__PURE__ */ e("section", { "aria-label": n, className: g, "data-ui-hook": "undo-redo-actions", "data-variant": c, "data-testid": b, children: /* @__PURE__ */ e(U, { actions: [
1311
- { disabled: l || !t, icon: "undo", id: "undo", label: u, onAction: (y) => {
1312
- r?.();
1335
+ return /* @__PURE__ */ e("section", { "aria-label": l, className: g, "data-ui-hook": "undo-redo-actions", "data-variant": c, "data-testid": b, children: /* @__PURE__ */ e($, { actions: [
1336
+ { disabled: n || !t, icon: "undo", id: "undo", label: u, onAction: (v) => {
1337
+ d?.();
1313
1338
  }, shortcut: "⌘Z" },
1314
- { disabled: l || !a, icon: "redo", id: "redo", label: d, onAction: (y) => {
1339
+ { disabled: n || !a, icon: "redo", id: "redo", label: r, onAction: (v) => {
1315
1340
  s?.();
1316
1341
  }, shortcut: "⇧⌘Z" }
1317
- ], density: "dense", label: n, style: "icon" }) });
1342
+ ], density: "dense", label: l, style: "icon" }) });
1318
1343
  }
1319
- function Ua({
1344
+ function ja({
1320
1345
  activeCategoryId: a,
1321
1346
  categories: t,
1322
1347
  className: i,
1323
- density: l = "comfortable",
1324
- emptyDescription: n = "Building pieces will appear here when a category is available.",
1348
+ density: n = "comfortable",
1349
+ emptyDescription: l = "Building pieces will appear here when a category is available.",
1325
1350
  emptyTitle: s = "No build pieces ready",
1326
- label: r,
1327
- onCategoryChange: d,
1351
+ label: d,
1352
+ onCategoryChange: r,
1328
1353
  onSelectItem: u,
1329
1354
  selectedItemId: c,
1330
1355
  title: b,
1331
1356
  variant: g = "desktop",
1332
- "data-testid": v
1357
+ "data-testid": f
1333
1358
  }) {
1334
- const y = ["game-ui-build-library", i].filter(Boolean).join(" "), k = t.filter((h) => !h.disabled), p = t.find((h) => h.id === a) ?? k[0] ?? t[0], f = p?.items ?? [], w = g === "small-mobile";
1335
- return /* @__PURE__ */ e(B, { className: y, "data-ui-hook": "build-library", "data-variant": g, "data-testid": v, title: b, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": r, "data-density": l, children: [
1359
+ const v = ["game-ui-build-library", i].filter(Boolean).join(" "), k = t.filter((h) => !h.disabled), p = t.find((h) => h.id === a) ?? k[0] ?? t[0], y = p?.items ?? [], w = g === "small-mobile";
1360
+ return /* @__PURE__ */ e(B, { className: v, "data-ui-hook": "build-library", "data-variant": g, "data-testid": f, title: b, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": d, "data-density": n, children: [
1336
1361
  /* @__PURE__ */ e("div", { "aria-label": "Build categories", className: "game-ui-build-categories", role: "tablist", children: t.map((h) => {
1337
1362
  const A = h.id === p?.id, T = g === "small-mobile" ? h.compactLabel ?? h.label : h.label;
1338
1363
  return /* @__PURE__ */ o(
@@ -1344,7 +1369,7 @@ function Ua({
1344
1369
  className: "game-ui-build-category",
1345
1370
  "data-build-category-id": h.id,
1346
1371
  disabled: h.disabled,
1347
- onClick: d && !h.disabled ? () => d(h.id) : void 0,
1372
+ onClick: r && !h.disabled ? () => r(h.id) : void 0,
1348
1373
  role: "tab",
1349
1374
  type: "button",
1350
1375
  children: [
@@ -1356,8 +1381,8 @@ function Ua({
1356
1381
  h.id
1357
1382
  );
1358
1383
  }) }),
1359
- f.length === 0 || !p ? /* @__PURE__ */ e(P, { description: n, icon: "home", title: s }) : /* @__PURE__ */ e("div", { "aria-label": `${p.label} pieces`, className: "game-ui-build-items", "data-card-layout": w ? "rail" : "list", id: `${p.id}-build-panel`, role: "tabpanel", children: f.map((h) => {
1360
- const A = h.id === c || h.status === "selected", T = A ? "selected" : h.status ?? "ready", G = !!(h.disabled || T === "locked" || T === "missing"), _ = w ? h.compactLabel ?? h.label : h.label;
1384
+ y.length === 0 || !p ? /* @__PURE__ */ e(P, { description: l, icon: "home", title: s }) : /* @__PURE__ */ e("div", { "aria-label": `${p.label} pieces`, className: "game-ui-build-items", "data-card-layout": w ? "rail" : "list", id: `${p.id}-build-panel`, role: "tabpanel", children: y.map((h) => {
1385
+ const A = h.id === c || h.status === "selected", T = A ? "selected" : h.status ?? "ready", G = !!(h.disabled || T === "locked" || T === "missing"), z = w ? h.compactLabel ?? h.label : h.label;
1361
1386
  return /* @__PURE__ */ o(
1362
1387
  "button",
1363
1388
  {
@@ -1374,10 +1399,10 @@ function Ua({
1374
1399
  /* @__PURE__ */ e("span", { className: "game-ui-build-item-icon", children: h.previewSrc ? /* @__PURE__ */ e("img", { alt: h.previewAlt ?? "", className: "game-ui-build-item-preview", src: h.previewSrc }) : /* @__PURE__ */ e(L, { icon: h.icon ?? p.icon ?? "home", size: w ? "sm" : "md" }) }),
1375
1400
  /* @__PURE__ */ o("span", { className: "game-ui-build-item-copy", children: [
1376
1401
  /* @__PURE__ */ o("span", { className: "game-ui-build-item-badges", children: [
1377
- /* @__PURE__ */ e(S, { tone: Ga[T], children: T }),
1402
+ /* @__PURE__ */ e(S, { tone: Pa[T], children: T }),
1378
1403
  h.badges?.map((x) => /* @__PURE__ */ e(S, { tone: x.tone ?? "neutral", children: x.label }, x.label))
1379
1404
  ] }),
1380
- /* @__PURE__ */ e("strong", { children: _ }),
1405
+ /* @__PURE__ */ e("strong", { children: z }),
1381
1406
  h.description ? /* @__PURE__ */ e("span", { children: h.description }) : null,
1382
1407
  h.meta ? /* @__PURE__ */ e("small", { children: h.meta }) : null
1383
1408
  ] })
@@ -1392,102 +1417,102 @@ function $e({
1392
1417
  children: a,
1393
1418
  className: t,
1394
1419
  closeIcon: i = "close",
1395
- closeLabel: l = "Close tools",
1396
- disabled: n = !1,
1420
+ closeLabel: n = "Close tools",
1421
+ disabled: l = !1,
1397
1422
  label: s,
1398
- onOpenChange: r,
1399
- open: d,
1423
+ onOpenChange: d,
1424
+ open: r,
1400
1425
  panelId: u,
1401
1426
  title: c,
1402
1427
  triggerIcon: b = "settings",
1403
1428
  triggerLabel: g = "Tools",
1404
- variant: v = "mobile",
1405
- "data-testid": y
1429
+ variant: f = "mobile",
1430
+ "data-testid": v
1406
1431
  }) {
1407
1432
  const k = ["game-ui-compact-game-drawer", t].filter(Boolean).join(" "), p = u ?? `${c.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "tools"}-drawer-panel`;
1408
- return /* @__PURE__ */ o("aside", { "aria-label": s, className: k, "data-open": d ? "true" : "false", "data-ui-hook": "compact-game-drawer", "data-variant": v, "data-testid": y, children: [
1433
+ return /* @__PURE__ */ o("aside", { "aria-label": s, className: k, "data-open": r ? "true" : "false", "data-ui-hook": "compact-game-drawer", "data-variant": f, "data-testid": v, children: [
1409
1434
  /* @__PURE__ */ o(
1410
1435
  C,
1411
1436
  {
1412
1437
  "aria-controls": p,
1413
- "aria-expanded": d,
1438
+ "aria-expanded": r,
1414
1439
  className: "game-ui-compact-game-drawer-trigger",
1415
- disabled: n,
1416
- onClick: r ? () => r(!d) : void 0,
1440
+ disabled: l,
1441
+ onClick: d ? () => d(!r) : void 0,
1417
1442
  type: "button",
1418
1443
  variant: "secondary",
1419
1444
  children: [
1420
- /* @__PURE__ */ e(L, { icon: d ? i : b, size: "sm", style: "line" }),
1421
- d ? l : g
1445
+ /* @__PURE__ */ e(L, { icon: r ? i : b, size: "sm", style: "line" }),
1446
+ r ? n : g
1422
1447
  ]
1423
1448
  }
1424
1449
  ),
1425
- /* @__PURE__ */ e("div", { "aria-hidden": !d, className: "game-ui-compact-game-drawer-panel", "data-drawer-panel": "true", id: p, children: /* @__PURE__ */ e(B, { title: c, tone: "strong", children: a }) })
1450
+ /* @__PURE__ */ e("div", { "aria-hidden": !r, className: "game-ui-compact-game-drawer-panel", "data-drawer-panel": "true", id: p, children: /* @__PURE__ */ e(B, { title: c, tone: "strong", children: a }) })
1426
1451
  ] });
1427
1452
  }
1428
- function $a({ status: a }) {
1453
+ function Fa({ status: a }) {
1429
1454
  if (!a) return null;
1430
- const t = typeof a.progressValue == "number" && typeof a.progressMax == "number", i = a.tone === "danger" ? "danger" : a.tone === "warning" ? "warning" : "success", l = a.progressMax ?? 100, n = a.progressValue ?? 0;
1455
+ const t = typeof a.progressValue == "number" && typeof a.progressMax == "number", i = a.tone === "danger" ? "danger" : a.tone === "warning" ? "warning" : "success", n = a.progressMax ?? 100, l = a.progressValue ?? 0;
1431
1456
  return /* @__PURE__ */ o("div", { className: "game-ui-terrain-status", "data-status-tone": a.tone ?? "neutral", "data-ui-hook": "terrain-status", children: [
1432
1457
  /* @__PURE__ */ e(S, { tone: a.tone ?? "neutral", children: a.label }),
1433
1458
  a.description ? /* @__PURE__ */ e("p", { children: a.description }) : null,
1434
1459
  t ? /* @__PURE__ */ e(
1435
- D,
1460
+ U,
1436
1461
  {
1437
1462
  label: a.progressLabel ?? a.label,
1438
- max: l,
1463
+ max: n,
1439
1464
  showValue: !0,
1440
1465
  tone: i,
1441
- value: n
1466
+ value: l
1442
1467
  }
1443
1468
  ) : null
1444
1469
  ] });
1445
1470
  }
1446
- function ja({
1471
+ function Wa({
1447
1472
  activeBuildCategoryId: a,
1448
1473
  activeMaterialId: t,
1449
1474
  activeModeId: i,
1450
- activeToolId: l,
1451
- brush: n,
1475
+ activeToolId: n,
1476
+ brush: l,
1452
1477
  buildCategories: s = [],
1453
- density: r = "comfortable",
1454
- disabled: d = !1,
1478
+ density: d = "comfortable",
1479
+ disabled: r = !1,
1455
1480
  materials: u = [],
1456
1481
  modes: c,
1457
1482
  onBrushRadiusChange: b,
1458
1483
  onBrushStrengthChange: g,
1459
- onBuildCategoryChange: v,
1460
- onMaterialChange: y,
1484
+ onBuildCategoryChange: f,
1485
+ onMaterialChange: v,
1461
1486
  onModeChange: k,
1462
1487
  onRedo: p,
1463
- onSelectBuildItem: f,
1488
+ onSelectBuildItem: y,
1464
1489
  onToolChange: w,
1465
1490
  onUndo: h,
1466
1491
  selectedBuildItemId: A,
1467
1492
  status: T,
1468
1493
  toolCompactLabelMode: G = "auto",
1469
- tools: _,
1494
+ tools: z,
1470
1495
  undoRedo: x,
1471
1496
  variant: E = "desktop"
1472
1497
  }) {
1473
- return /* @__PURE__ */ o("div", { className: "game-ui-terrain-build-toolbox-body", "data-active-mode": i, "data-active-tool": l, "data-variant": E, children: [
1474
- /* @__PURE__ */ e($a, { status: T }),
1475
- /* @__PURE__ */ e(_a, { activeModeId: i, disabled: d, label: "Tool mode", modes: c, onModeChange: k, variant: E }),
1498
+ return /* @__PURE__ */ o("div", { className: "game-ui-terrain-build-toolbox-body", "data-active-mode": i, "data-active-tool": n, "data-variant": E, children: [
1499
+ /* @__PURE__ */ e(Fa, { status: T }),
1500
+ /* @__PURE__ */ e(Va, { activeModeId: i, disabled: r, label: "Tool mode", modes: c, onModeChange: k, variant: E }),
1476
1501
  /* @__PURE__ */ o("div", { className: "game-ui-terrain-build-main-grid", children: [
1477
- /* @__PURE__ */ e(za, { activeToolId: l, compactLabelMode: G, density: r, disabled: d, label: "Terrain tools", onToolChange: w, tools: _, variant: E }),
1478
- /* @__PURE__ */ e(Da, { canRedo: x?.canRedo, canUndo: x?.canUndo, disabled: d, label: "Terrain history", onRedo: p, onUndo: h, redoLabel: x?.redoLabel, undoLabel: x?.undoLabel, variant: E }),
1479
- /* @__PURE__ */ e(Va, { onRadiusChange: b, onStrengthChange: g, state: { ...n, disabled: !!(d || n.disabled) }, variant: E }),
1480
- u.length > 0 ? /* @__PURE__ */ e(Ha, { activeMaterialId: t, disabled: d, label: "Terrain materials", materials: u, onMaterialChange: y, variant: E }) : null
1502
+ /* @__PURE__ */ e(Ha, { activeToolId: n, compactLabelMode: G, density: d, disabled: r, label: "Terrain tools", onToolChange: w, tools: z, variant: E }),
1503
+ /* @__PURE__ */ e($a, { canRedo: x?.canRedo, canUndo: x?.canUndo, disabled: r, label: "Terrain history", onRedo: p, onUndo: h, redoLabel: x?.redoLabel, undoLabel: x?.undoLabel, variant: E }),
1504
+ /* @__PURE__ */ e(Da, { onRadiusChange: b, onStrengthChange: g, state: { ...l, disabled: !!(r || l.disabled) }, variant: E }),
1505
+ u.length > 0 ? /* @__PURE__ */ e(Ua, { activeMaterialId: t, disabled: r, label: "Terrain materials", materials: u, onMaterialChange: v, variant: E }) : null
1481
1506
  ] }),
1482
1507
  s.length > 0 ? /* @__PURE__ */ e(
1483
- Ua,
1508
+ ja,
1484
1509
  {
1485
1510
  activeCategoryId: a,
1486
1511
  categories: s,
1487
- density: r,
1512
+ density: d,
1488
1513
  label: "Build library",
1489
- onCategoryChange: v,
1490
- onSelectItem: f,
1514
+ onCategoryChange: f,
1515
+ onSelectItem: y,
1491
1516
  selectedItemId: A,
1492
1517
  title: "Build pieces",
1493
1518
  variant: E
@@ -1499,28 +1524,28 @@ function Te({
1499
1524
  className: a,
1500
1525
  drawerOpen: t = !1,
1501
1526
  drawerTitle: i = "Terrain and build tools",
1502
- label: l,
1503
- onDrawerOpenChange: n,
1527
+ label: n,
1528
+ onDrawerOpenChange: l,
1504
1529
  title: s,
1505
- variant: r = "desktop",
1506
- "data-testid": d,
1530
+ variant: d = "desktop",
1531
+ "data-testid": r,
1507
1532
  ...u
1508
1533
  }) {
1509
- const c = ["game-ui-terrain-build-toolbox", a].filter(Boolean).join(" "), b = /* @__PURE__ */ e(ja, { ...u, variant: r });
1510
- return r === "mobile" || r === "small-mobile" ? /* @__PURE__ */ e(
1534
+ const c = ["game-ui-terrain-build-toolbox", a].filter(Boolean).join(" "), b = /* @__PURE__ */ e(Wa, { ...u, variant: d });
1535
+ return d === "mobile" || d === "small-mobile" ? /* @__PURE__ */ e(
1511
1536
  $e,
1512
1537
  {
1513
1538
  className: c,
1514
- label: l,
1515
- onOpenChange: n,
1539
+ label: n,
1540
+ onOpenChange: l,
1516
1541
  open: t,
1517
1542
  title: i,
1518
1543
  triggerLabel: s,
1519
- variant: r,
1520
- "data-testid": d,
1544
+ variant: d,
1545
+ "data-testid": r,
1521
1546
  children: b
1522
1547
  }
1523
- ) : /* @__PURE__ */ e(B, { className: c, "data-ui-hook": "terrain-build-toolbox", "data-variant": r, "data-testid": d, title: s, tone: "strong", children: /* @__PURE__ */ e("section", { "aria-label": l, children: b }) });
1548
+ ) : /* @__PURE__ */ e(B, { className: c, "data-ui-hook": "terrain-build-toolbox", "data-variant": d, "data-testid": r, title: s, tone: "strong", children: /* @__PURE__ */ e("section", { "aria-label": n, children: b }) });
1524
1549
  }
1525
1550
  const je = {
1526
1551
  accepted: "success",
@@ -1540,12 +1565,12 @@ const je = {
1540
1565
  queued: "hourglass",
1541
1566
  readyForReview: "vote",
1542
1567
  working: "energy"
1543
- }, Fa = {
1568
+ }, Ya = {
1544
1569
  active: "ai",
1545
1570
  blocked: "danger",
1546
1571
  complete: "success",
1547
1572
  pending: "neutral"
1548
- }, Wa = {
1573
+ }, Ka = {
1549
1574
  blocked: "danger",
1550
1575
  done: "success",
1551
1576
  idle: "neutral",
@@ -1559,7 +1584,7 @@ const je = {
1559
1584
  "local-only": "success",
1560
1585
  mock: "ai",
1561
1586
  "paid-disabled": "warning"
1562
- }, Ya = {
1587
+ }, qa = {
1563
1588
  accepted: [{ id: "revert", label: "Revert", icon: "undo", tone: "ghost" }],
1564
1589
  blocked: [
1565
1590
  { id: "revise", label: "Revise", icon: "scroll", tone: "primary" },
@@ -1588,10 +1613,10 @@ const je = {
1588
1613
  function Ke(a, t) {
1589
1614
  return t || (a === "readyForReview" ? "Ready for review" : a.replace(/([A-Z])/g, " $1").replace(/^./, (i) => i.toUpperCase()));
1590
1615
  }
1591
- function Ka(a) {
1616
+ function Ja(a) {
1592
1617
  return a === "blocked" || a === "cancelled" ? "danger" : a === "accepted" || a === "readyForReview" ? "success" : a === "queued" || a === "draft" || a === "preview" ? "warning" : "accent";
1593
1618
  }
1594
- function qa(a) {
1619
+ function Za(a) {
1595
1620
  switch (a) {
1596
1621
  case "accepted":
1597
1622
  return 100;
@@ -1611,16 +1636,16 @@ function qa(a) {
1611
1636
  return 64;
1612
1637
  }
1613
1638
  }
1614
- function Ja(a, t, i) {
1615
- const l = {
1639
+ function Xa(a, t, i) {
1640
+ const n = {
1616
1641
  disabled: !!(i || a.disabled),
1617
1642
  id: a.id,
1618
1643
  label: a.label,
1619
1644
  tone: a.tone ?? "secondary"
1620
1645
  };
1621
- return a.icon && (l.icon = a.icon), a.ariaLabel && (l.ariaLabel = a.ariaLabel), a.meta && (l.meta = a.meta), t && (l.onAction = t), l;
1646
+ return a.icon && (n.icon = a.icon), a.ariaLabel && (n.ariaLabel = a.ariaLabel), a.meta && (n.meta = a.meta), t && (n.onAction = t), n;
1622
1647
  }
1623
- function Za(a) {
1648
+ function Qa(a) {
1624
1649
  return a === "danger" || a === "warning" ? "alert" : "status";
1625
1650
  }
1626
1651
  function ee(a) {
@@ -1630,35 +1655,35 @@ function qe({
1630
1655
  className: a,
1631
1656
  label: t,
1632
1657
  max: i = 100,
1633
- progressLabel: l = "Construction progress",
1634
- showStatusBadge: n = !0,
1658
+ progressLabel: n = "Construction progress",
1659
+ showStatusBadge: l = !0,
1635
1660
  status: s,
1636
- statusLabel: r,
1637
- steps: d = [],
1661
+ statusLabel: d,
1662
+ steps: r = [],
1638
1663
  validationWarnings: u = [],
1639
1664
  value: c,
1640
1665
  variant: b = "desktop",
1641
1666
  "data-testid": g
1642
1667
  }) {
1643
- const v = ["game-ui-construction-progress", a].filter(Boolean).join(" "), y = c ?? qa(s), k = Ke(s, r);
1644
- return /* @__PURE__ */ o("section", { "aria-label": t, className: v, "data-status": s, "data-ui-hook": "construction-progress", "data-variant": b, "data-testid": g, children: [
1668
+ const f = ["game-ui-construction-progress", a].filter(Boolean).join(" "), v = c ?? Za(s), k = Ke(s, d);
1669
+ return /* @__PURE__ */ o("section", { "aria-label": t, className: f, "data-status": s, "data-ui-hook": "construction-progress", "data-variant": b, "data-testid": g, children: [
1645
1670
  /* @__PURE__ */ o("header", { className: "game-ui-construction-progress-header", children: [
1646
1671
  /* @__PURE__ */ o("span", { children: [
1647
1672
  /* @__PURE__ */ e(L, { icon: Fe[s], size: "sm" }),
1648
- /* @__PURE__ */ e("strong", { children: l })
1673
+ /* @__PURE__ */ e("strong", { children: n })
1649
1674
  ] }),
1650
- n ? /* @__PURE__ */ e(S, { tone: je[s], children: k }) : null
1675
+ l ? /* @__PURE__ */ e(S, { tone: je[s], children: k }) : null
1651
1676
  ] }),
1652
- /* @__PURE__ */ e(D, { label: l, max: i, showValue: !0, tone: Ka(s), value: y }),
1653
- d.length > 0 ? /* @__PURE__ */ e("ol", { className: "game-ui-construction-steps", "aria-label": `${l} steps`, children: d.map((p) => /* @__PURE__ */ o("li", { "data-step-status": p.status, children: [
1677
+ /* @__PURE__ */ e(U, { label: n, max: i, showValue: !0, tone: Ja(s), value: v }),
1678
+ r.length > 0 ? /* @__PURE__ */ e("ol", { className: "game-ui-construction-steps", "aria-label": `${n} steps`, children: r.map((p) => /* @__PURE__ */ o("li", { "data-step-status": p.status, children: [
1654
1679
  /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-construction-step-dot" }),
1655
1680
  /* @__PURE__ */ o("span", { children: [
1656
1681
  /* @__PURE__ */ e("strong", { children: p.label }),
1657
1682
  p.caption ? /* @__PURE__ */ e("small", { children: p.caption }) : null
1658
1683
  ] }),
1659
- /* @__PURE__ */ e(S, { tone: Fa[p.status], children: p.status })
1684
+ /* @__PURE__ */ e(S, { tone: Ya[p.status], children: p.status })
1660
1685
  ] }, p.id)) }) : null,
1661
- u.length > 0 ? /* @__PURE__ */ e("div", { className: "game-ui-construction-warnings", "data-ui-hook": "construction-validation-warnings", children: u.map((p) => /* @__PURE__ */ o("div", { className: "game-ui-construction-warning", "data-warning-tone": p.tone ?? "warning", role: Za(p.tone), children: [
1686
+ u.length > 0 ? /* @__PURE__ */ e("div", { className: "game-ui-construction-warnings", "data-ui-hook": "construction-validation-warnings", children: u.map((p) => /* @__PURE__ */ o("div", { className: "game-ui-construction-warning", "data-warning-tone": p.tone ?? "warning", role: Qa(p.tone), children: [
1662
1687
  /* @__PURE__ */ e(L, { icon: p.tone === "danger" || p.tone === "warning" ? "alert" : "check", size: "sm" }),
1663
1688
  /* @__PURE__ */ o("span", { children: [
1664
1689
  /* @__PURE__ */ e("strong", { children: p.label }),
@@ -1671,49 +1696,49 @@ function Je({
1671
1696
  actions: a,
1672
1697
  className: t,
1673
1698
  disabled: i = !1,
1674
- label: l,
1675
- localOnlyLabel: n = "Local-only construction",
1699
+ label: n,
1700
+ localOnlyLabel: l = "Local-only construction",
1676
1701
  onAction: s,
1677
- providerMode: r,
1678
- status: d,
1702
+ providerMode: d,
1703
+ status: r,
1679
1704
  validationWarnings: u = [],
1680
1705
  variant: c = "desktop",
1681
1706
  "data-testid": b
1682
1707
  }) {
1683
- const g = ["game-ui-construction-approval-bar", t].filter(Boolean).join(" "), v = a ?? Ya[d], y = u.filter((p) => p.tone !== "success").length, k = v.map((p) => Ja(p, s, i));
1684
- return /* @__PURE__ */ o("section", { "aria-label": l, className: g, "data-status": d, "data-ui-hook": "construction-approval-bar", "data-variant": c, "data-testid": b, children: [
1708
+ const g = ["game-ui-construction-approval-bar", t].filter(Boolean).join(" "), f = a ?? qa[r], v = u.filter((p) => p.tone !== "success").length, k = f.map((p) => Xa(p, s, i));
1709
+ return /* @__PURE__ */ o("section", { "aria-label": n, className: g, "data-status": r, "data-ui-hook": "construction-approval-bar", "data-variant": c, "data-testid": b, children: [
1685
1710
  /* @__PURE__ */ o("div", { className: "game-ui-construction-approval-meta", children: [
1686
- r ? /* @__PURE__ */ e(S, { tone: Ye[r], children: We[r] }) : /* @__PURE__ */ e(S, { tone: "success", children: n }),
1687
- y > 0 ? /* @__PURE__ */ o(S, { tone: "warning", children: [
1688
- y,
1711
+ d ? /* @__PURE__ */ e(S, { tone: Ye[d], children: We[d] }) : /* @__PURE__ */ e(S, { tone: "success", children: l }),
1712
+ v > 0 ? /* @__PURE__ */ o(S, { tone: "warning", children: [
1713
+ v,
1689
1714
  " validation warning",
1690
- y === 1 ? "" : "s"
1715
+ v === 1 ? "" : "s"
1691
1716
  ] }) : /* @__PURE__ */ e(S, { tone: "success", children: "Validation clear" })
1692
1717
  ] }),
1693
- k.length > 0 ? /* @__PURE__ */ e(U, { actions: k, density: c === "small-mobile" ? "dense" : "comfortable", label: `${l} actions` }) : null
1718
+ k.length > 0 ? /* @__PURE__ */ e($, { actions: k, density: c === "small-mobile" ? "dense" : "comfortable", label: `${n} actions` }) : null
1694
1719
  ] });
1695
1720
  }
1696
1721
  function Ze({
1697
1722
  className: a,
1698
1723
  crew: t,
1699
1724
  emptyDescription: i = "Robot crew members appear here when a construction job starts.",
1700
- emptyTitle: l = "No robot crew assigned",
1701
- label: n,
1725
+ emptyTitle: n = "No robot crew assigned",
1726
+ label: l,
1702
1727
  title: s,
1703
- variant: r = "desktop",
1704
- "data-testid": d
1728
+ variant: d = "desktop",
1729
+ "data-testid": r
1705
1730
  }) {
1706
1731
  const u = ["game-ui-robot-crew-status", a].filter(Boolean).join(" ");
1707
- return /* @__PURE__ */ o("section", { "aria-label": n, className: u, "data-ui-hook": "robot-crew-status", "data-variant": r, "data-testid": d, children: [
1732
+ return /* @__PURE__ */ o("section", { "aria-label": l, className: u, "data-ui-hook": "robot-crew-status", "data-variant": d, "data-testid": r, children: [
1708
1733
  s ? /* @__PURE__ */ e("header", { children: /* @__PURE__ */ e("strong", { children: s }) }) : null,
1709
- t.length === 0 ? /* @__PURE__ */ e(P, { description: i, icon: "ai", title: l }) : /* @__PURE__ */ e("div", { className: "game-ui-robot-crew-list", children: t.map((c) => /* @__PURE__ */ o("article", { className: "game-ui-robot-crew-member", "data-crew-status": c.status, children: [
1710
- /* @__PURE__ */ e(L, { icon: c.icon ?? "ai", size: r === "small-mobile" ? "sm" : "md" }),
1734
+ t.length === 0 ? /* @__PURE__ */ e(P, { description: i, icon: "ai", title: n }) : /* @__PURE__ */ e("div", { className: "game-ui-robot-crew-list", children: t.map((c) => /* @__PURE__ */ o("article", { className: "game-ui-robot-crew-member", "data-crew-status": c.status, children: [
1735
+ /* @__PURE__ */ e(L, { icon: c.icon ?? "ai", size: d === "small-mobile" ? "sm" : "md" }),
1711
1736
  /* @__PURE__ */ o("span", { className: "game-ui-robot-crew-copy", children: [
1712
1737
  /* @__PURE__ */ e("strong", { children: c.name }),
1713
1738
  /* @__PURE__ */ e("small", { children: c.role }),
1714
1739
  c.task ? /* @__PURE__ */ e("em", { children: c.task }) : null
1715
1740
  ] }),
1716
- /* @__PURE__ */ e(S, { tone: Wa[c.status], children: c.status })
1741
+ /* @__PURE__ */ e(S, { tone: Ka[c.status], children: c.status })
1717
1742
  ] }, c.id)) })
1718
1743
  ] });
1719
1744
  }
@@ -1721,19 +1746,19 @@ function Xe({
1721
1746
  activeView: a,
1722
1747
  after: t,
1723
1748
  before: i,
1724
- className: l,
1725
- label: n,
1749
+ className: n,
1750
+ label: l,
1726
1751
  onViewChange: s,
1727
- variant: r = "desktop",
1728
- "data-testid": d
1752
+ variant: d = "desktop",
1753
+ "data-testid": r
1729
1754
  }) {
1730
- const u = ["game-ui-before-after-toggle", l].filter(Boolean).join(" "), c = a === "before" ? i : t;
1731
- return /* @__PURE__ */ o("section", { "aria-label": n, className: u, "data-active-view": a, "data-ui-hook": "before-after-toggle", "data-variant": r, "data-testid": d, children: [
1755
+ const u = ["game-ui-before-after-toggle", n].filter(Boolean).join(" "), c = a === "before" ? i : t;
1756
+ return /* @__PURE__ */ o("section", { "aria-label": l, className: u, "data-active-view": a, "data-ui-hook": "before-after-toggle", "data-variant": d, "data-testid": r, children: [
1732
1757
  /* @__PURE__ */ e(
1733
1758
  Pe,
1734
1759
  {
1735
1760
  activeId: a,
1736
- label: `${n} view`,
1761
+ label: `${l} view`,
1737
1762
  ...s ? { onSelect: (b) => s(b) } : {},
1738
1763
  options: [{ id: "before", label: i.label }, { id: "after", label: t.label }]
1739
1764
  }
@@ -1748,19 +1773,19 @@ function ae({
1748
1773
  className: a,
1749
1774
  density: t = "comfortable",
1750
1775
  job: i,
1751
- onAction: l,
1752
- onSelect: n,
1776
+ onAction: n,
1777
+ onSelect: l,
1753
1778
  selected: s = !1,
1754
- showApprovalBar: r = !0,
1755
- showBeforeAfter: d = !1,
1779
+ showApprovalBar: d = !0,
1780
+ showBeforeAfter: r = !1,
1756
1781
  variant: u = "desktop",
1757
1782
  "data-testid": c
1758
1783
  }) {
1759
- const b = ["game-ui-construction-job-card", a].filter(Boolean).join(" "), g = Ke(i.status, i.statusLabel), v = u === "mobile" || u === "small-mobile", y = i.facts ?? [], k = () => n?.(i.id), p = (f) => l?.(f, i.id);
1784
+ const b = ["game-ui-construction-job-card", a].filter(Boolean).join(" "), g = Ke(i.status, i.statusLabel), f = u === "mobile" || u === "small-mobile", v = i.facts ?? [], k = () => l?.(i.id), p = (y) => n?.(y, i.id);
1760
1785
  return /* @__PURE__ */ o("article", { className: b, "data-density": t, "data-job-id": i.id, "data-selected": s ? "true" : "false", "data-status": i.status, "data-ui-hook": "construction-job-card", "data-variant": u, "data-testid": c, children: [
1761
1786
  /* @__PURE__ */ o("header", { className: "game-ui-construction-job-header", children: [
1762
- /* @__PURE__ */ o("button", { "aria-pressed": s, className: "game-ui-construction-job-select", disabled: !n, onClick: k, type: "button", children: [
1763
- /* @__PURE__ */ e(L, { icon: Fe[i.status], size: v ? "sm" : "md" }),
1787
+ /* @__PURE__ */ o("button", { "aria-pressed": s, className: "game-ui-construction-job-select", disabled: !l, onClick: k, type: "button", children: [
1788
+ /* @__PURE__ */ e(L, { icon: Fe[i.status], size: f ? "sm" : "md" }),
1764
1789
  /* @__PURE__ */ o("span", { children: [
1765
1790
  /* @__PURE__ */ e("strong", { children: i.title }),
1766
1791
  i.description ? /* @__PURE__ */ e("small", { children: i.description }) : null
@@ -1769,7 +1794,7 @@ function ae({
1769
1794
  /* @__PURE__ */ o("span", { className: "game-ui-construction-job-badges", children: [
1770
1795
  /* @__PURE__ */ e(S, { tone: je[i.status], children: g }),
1771
1796
  i.providerMode ? /* @__PURE__ */ e(S, { tone: Ye[i.providerMode], children: We[i.providerMode] }) : null,
1772
- i.badges?.map((f) => /* @__PURE__ */ e(S, { tone: f.tone ?? "neutral", children: f.label }, f.label))
1797
+ i.badges?.map((y) => /* @__PURE__ */ e(S, { tone: y.tone ?? "neutral", children: y.label }, y.label))
1773
1798
  ] })
1774
1799
  ] }),
1775
1800
  /* @__PURE__ */ o("div", { className: "game-ui-construction-job-facts", "aria-label": `${i.title} facts`, children: [
@@ -1781,10 +1806,10 @@ function ae({
1781
1806
  /* @__PURE__ */ e("small", { children: "ETA" }),
1782
1807
  /* @__PURE__ */ e("b", { children: i.estimate })
1783
1808
  ] }) : null,
1784
- y.map((f) => /* @__PURE__ */ o("span", { children: [
1785
- /* @__PURE__ */ e("small", { children: f.label }),
1786
- /* @__PURE__ */ e("b", { children: f.value })
1787
- ] }, f.id))
1809
+ v.map((y) => /* @__PURE__ */ o("span", { children: [
1810
+ /* @__PURE__ */ e("small", { children: y.label }),
1811
+ /* @__PURE__ */ e("b", { children: y.value })
1812
+ ] }, y.id))
1788
1813
  ] }),
1789
1814
  /* @__PURE__ */ e(
1790
1815
  qe,
@@ -1793,16 +1818,16 @@ function ae({
1793
1818
  progressLabel: i.progressLabel,
1794
1819
  status: i.status,
1795
1820
  statusLabel: g,
1796
- steps: v ? [] : i.steps,
1821
+ steps: f ? [] : i.steps,
1797
1822
  validationWarnings: i.validationWarnings,
1798
1823
  value: i.progressValue,
1799
1824
  max: i.progressMax,
1800
1825
  variant: u
1801
1826
  }
1802
1827
  ),
1803
- d && ee(i) ? /* @__PURE__ */ e(Xe, { activeView: "after", after: i.after, before: i.before, label: `${i.title} preview`, variant: u }) : null,
1828
+ r && ee(i) ? /* @__PURE__ */ e(Xe, { activeView: "after", after: i.after, before: i.before, label: `${i.title} preview`, variant: u }) : null,
1804
1829
  i.crew && i.crew.length > 0 ? /* @__PURE__ */ e(Ze, { crew: i.crew, label: `${i.title} robot crew`, variant: u }) : null,
1805
- r ? /* @__PURE__ */ e(
1830
+ d ? /* @__PURE__ */ e(
1806
1831
  Je,
1807
1832
  {
1808
1833
  actions: i.actions,
@@ -1816,46 +1841,46 @@ function ae({
1816
1841
  ) : null
1817
1842
  ] });
1818
1843
  }
1819
- function Xa({
1844
+ function ei({
1820
1845
  children: a,
1821
1846
  className: t,
1822
1847
  closeLabel: i = "Close jobs",
1823
- disabled: l = !1,
1824
- jobs: n = [],
1848
+ disabled: n = !1,
1849
+ jobs: l = [],
1825
1850
  label: s,
1826
- onAction: r,
1827
- onOpenChange: d,
1851
+ onAction: d,
1852
+ onOpenChange: r,
1828
1853
  onSelectJob: u,
1829
1854
  open: c,
1830
1855
  panelId: b = "game-compact-job-drawer-panel",
1831
1856
  selectedJobId: g,
1832
- title: v,
1833
- triggerLabel: y = "Construction jobs",
1857
+ title: f,
1858
+ triggerLabel: v = "Construction jobs",
1834
1859
  variant: k = "mobile",
1835
1860
  "data-testid": p
1836
1861
  }) {
1837
- const f = ["game-ui-compact-job-drawer", t].filter(Boolean).join(" ");
1862
+ const y = ["game-ui-compact-job-drawer", t].filter(Boolean).join(" ");
1838
1863
  return /* @__PURE__ */ e(
1839
1864
  $e,
1840
1865
  {
1841
- className: f,
1866
+ className: y,
1842
1867
  closeLabel: i,
1843
- disabled: l,
1868
+ disabled: n,
1844
1869
  label: s,
1845
- onOpenChange: d,
1870
+ onOpenChange: r,
1846
1871
  open: c,
1847
1872
  panelId: b,
1848
- title: v,
1873
+ title: f,
1849
1874
  triggerIcon: "energy",
1850
- triggerLabel: y,
1875
+ triggerLabel: v,
1851
1876
  variant: k,
1852
1877
  "data-testid": p,
1853
- children: a ?? /* @__PURE__ */ e("div", { className: "game-ui-compact-job-drawer-list", children: n.map((w) => /* @__PURE__ */ e(
1878
+ children: a ?? /* @__PURE__ */ e("div", { className: "game-ui-compact-job-drawer-list", tabIndex: 0, children: l.map((w) => /* @__PURE__ */ e(
1854
1879
  ae,
1855
1880
  {
1856
1881
  density: "dense",
1857
1882
  job: w,
1858
- onAction: r,
1883
+ onAction: d,
1859
1884
  onSelect: u,
1860
1885
  selected: w.id === g,
1861
1886
  showApprovalBar: !1,
@@ -1870,44 +1895,45 @@ function Ce({
1870
1895
  activePreviewView: a = "after",
1871
1896
  className: t,
1872
1897
  density: i = "comfortable",
1873
- drawerOpen: l = !1,
1874
- emptyDescription: n = "Draft construction jobs will appear here before any provider call is allowed.",
1898
+ drawerOpen: n = !1,
1899
+ emptyDescription: l = "Draft construction jobs will appear here before any provider call is allowed.",
1875
1900
  emptyTitle: s = "No construction jobs",
1876
- jobs: r,
1877
- label: d,
1901
+ jobs: d,
1902
+ label: r,
1878
1903
  onAction: u,
1879
1904
  onDrawerOpenChange: c,
1880
1905
  onPreviewViewChange: b,
1881
1906
  onSelectJob: g,
1882
- selectedJobId: v,
1883
- subtitle: y,
1907
+ selectedJobId: f,
1908
+ subtitle: v,
1884
1909
  title: k,
1885
1910
  variant: p = "desktop",
1886
- "data-testid": f
1911
+ "data-testid": y
1887
1912
  }) {
1888
- const w = ["game-ui-contractor-panel", t].filter(Boolean).join(" "), h = r.find((T) => T.id === v) ?? r[0];
1889
- return p === "mobile" || p === "small-mobile" ? /* @__PURE__ */ o("section", { "aria-label": d, className: w, "data-ui-hook": "contractor-panel", "data-variant": p, "data-testid": f, children: [
1913
+ const w = ["game-ui-contractor-panel", t].filter(Boolean).join(" "), h = d.find((T) => T.id === f) ?? d[0];
1914
+ return p === "mobile" || p === "small-mobile" ? /* @__PURE__ */ o("section", { "aria-label": r, className: w, "data-ui-hook": "contractor-panel", "data-variant": p, "data-testid": y, children: [
1890
1915
  /* @__PURE__ */ e(
1891
- Xa,
1916
+ ei,
1892
1917
  {
1893
- jobs: r,
1894
- label: `${d} drawer`,
1918
+ jobs: d,
1919
+ label: `${r} drawer`,
1895
1920
  onAction: u,
1896
1921
  onOpenChange: c,
1897
1922
  onSelectJob: g,
1898
- open: l,
1923
+ open: n,
1899
1924
  selectedJobId: h?.id,
1900
1925
  title: k,
1901
1926
  triggerLabel: "Contractor",
1902
1927
  variant: p
1903
1928
  }
1904
1929
  ),
1905
- h ? /* @__PURE__ */ e(ae, { density: "dense", job: h, onAction: u, onSelect: g, selected: !0, showBeforeAfter: ee(h), variant: p }) : /* @__PURE__ */ e(P, { description: n, icon: "energy", title: s })
1906
- ] }) : /* @__PURE__ */ e(B, { className: w, "data-ui-hook": "contractor-panel", "data-variant": p, "data-testid": f, title: k, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": d, "data-density": i, children: [
1907
- y ? /* @__PURE__ */ e("p", { className: "game-ui-contractor-panel-subtitle", children: y }) : null,
1908
- r.length === 0 ? /* @__PURE__ */ e(P, { description: n, icon: "energy", title: s }) : null,
1909
- r.length > 0 ? /* @__PURE__ */ o("div", { className: "game-ui-contractor-panel-grid", children: [
1910
- /* @__PURE__ */ e("div", { className: "game-ui-contractor-job-list", "aria-label": "Construction job queue", children: r.map((T) => /* @__PURE__ */ e(
1930
+ h && !n ? /* @__PURE__ */ e(ae, { density: "dense", job: h, onAction: u, onSelect: g, selected: !0, showBeforeAfter: ee(h), variant: p }) : null,
1931
+ h ? null : /* @__PURE__ */ e(P, { description: l, icon: "energy", title: s })
1932
+ ] }) : /* @__PURE__ */ e(B, { className: w, "data-ui-hook": "contractor-panel", "data-variant": p, "data-testid": y, title: k, tone: "strong", children: /* @__PURE__ */ o("section", { "aria-label": r, "data-density": i, children: [
1933
+ v ? /* @__PURE__ */ e("p", { className: "game-ui-contractor-panel-subtitle", children: v }) : null,
1934
+ d.length === 0 ? /* @__PURE__ */ e(P, { description: l, icon: "energy", title: s }) : null,
1935
+ d.length > 0 ? /* @__PURE__ */ o("div", { className: "game-ui-contractor-panel-grid", children: [
1936
+ /* @__PURE__ */ e("div", { "aria-label": "Construction job queue", className: "game-ui-contractor-job-list", tabIndex: 0, children: d.map((T) => /* @__PURE__ */ e(
1911
1937
  ae,
1912
1938
  {
1913
1939
  density: i,
@@ -1966,32 +1992,32 @@ function Ce({
1966
1992
  function ye(...a) {
1967
1993
  return a.filter(Boolean).join(" ");
1968
1994
  }
1969
- const Qa = {
1995
+ const ai = {
1970
1996
  collapse: "Collapse",
1971
1997
  expand: "Expand"
1972
1998
  };
1973
- function Oi({
1999
+ function _i({
1974
2000
  actions: a,
1975
2001
  children: t,
1976
2002
  className: i,
1977
- defaultOpen: l = !0,
1978
- labels: n,
2003
+ defaultOpen: n = !0,
2004
+ labels: l,
1979
2005
  onOpenChange: s,
1980
- open: r,
1981
- title: d,
2006
+ open: d,
2007
+ title: r,
1982
2008
  tone: u = "default",
1983
2009
  ...c
1984
2010
  }) {
1985
- const b = Y(), [g, v] = M(l), y = r ?? g, k = { ...Qa, ...n }, p = () => {
1986
- const f = !y;
1987
- r === void 0 && v(f), s?.(f);
2011
+ const b = _(), [g, f] = M(n), v = d ?? g, k = { ...ai, ...l }, p = () => {
2012
+ const y = !v;
2013
+ d === void 0 && f(y), s?.(y);
1988
2014
  };
1989
2015
  return /* @__PURE__ */ o(
1990
2016
  "section",
1991
2017
  {
1992
2018
  ...c,
1993
2019
  className: ye("game-ui-collapsible", i),
1994
- "data-open": y,
2020
+ "data-open": v,
1995
2021
  "data-panel-tone": u,
1996
2022
  children: [
1997
2023
  /* @__PURE__ */ o("header", { className: "game-ui-collapsible-header", children: [
@@ -1999,14 +2025,14 @@ function Oi({
1999
2025
  "button",
2000
2026
  {
2001
2027
  "aria-controls": b,
2002
- "aria-expanded": y,
2028
+ "aria-expanded": v,
2003
2029
  className: "game-ui-collapsible-toggle",
2004
2030
  onClick: p,
2005
- title: y ? k.collapse : k.expand,
2031
+ title: v ? k.collapse : k.expand,
2006
2032
  type: "button",
2007
2033
  children: [
2008
2034
  /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-collapsible-chevron" }),
2009
- /* @__PURE__ */ e("span", { className: "game-ui-collapsible-title", children: d })
2035
+ /* @__PURE__ */ e("span", { className: "game-ui-collapsible-title", children: r })
2010
2036
  ]
2011
2037
  }
2012
2038
  ) }),
@@ -2017,13 +2043,13 @@ function Oi({
2017
2043
  }
2018
2044
  );
2019
2045
  }
2020
- const ei = {
2046
+ const ii = {
2021
2047
  close: "Close",
2022
2048
  maximize: "Maximize",
2023
2049
  minimize: "Minimize",
2024
2050
  restore: "Restore"
2025
2051
  };
2026
- function F({ kind: a }) {
2052
+ function W({ kind: a }) {
2027
2053
  return /* @__PURE__ */ e("svg", { "aria-hidden": "true", fill: "none", height: "14", viewBox: "0 0 14 14", width: "14", children: /* @__PURE__ */ e("path", { d: {
2028
2054
  close: "M3 3l8 8M11 3l-8 8",
2029
2055
  maximize: "M3 5V3h2M9 3h2v2M11 9v2H9M5 11H3V9",
@@ -2031,65 +2057,65 @@ function F({ kind: a }) {
2031
2057
  restore: "M4 6h6v5H4zM6 6V4h6v5h-2"
2032
2058
  }[a], stroke: "currentColor", strokeLinecap: "round", strokeWidth: "2" }) });
2033
2059
  }
2034
- function Pi({
2060
+ function zi({
2035
2061
  allowMaximize: a = !0,
2036
2062
  allowMinimize: t = !0,
2037
2063
  children: i,
2038
- className: l,
2039
- defaultState: n = "normal",
2064
+ className: n,
2065
+ defaultState: l = "normal",
2040
2066
  footer: s,
2041
- icon: r,
2042
- labels: d,
2067
+ icon: d,
2068
+ labels: r,
2043
2069
  onClose: u,
2044
2070
  onStateChange: c,
2045
2071
  state: b,
2046
2072
  title: g,
2047
- ...v
2073
+ ...f
2048
2074
  }) {
2049
- const [y, k] = M(n), p = b ?? y, f = { ...ei, ...d }, w = (T) => {
2075
+ const [v, k] = M(l), p = b ?? v, y = { ...ii, ...r }, w = (T) => {
2050
2076
  b === void 0 && k(T), c?.(T);
2051
2077
  }, h = p === "minimized", A = p === "maximized";
2052
2078
  return /* @__PURE__ */ o(
2053
2079
  "section",
2054
2080
  {
2055
- ...v,
2081
+ ...f,
2056
2082
  "aria-label": g,
2057
- className: ye("game-ui-window", l),
2083
+ className: ye("game-ui-window", n),
2058
2084
  "data-window-state": p,
2059
2085
  role: "group",
2060
2086
  children: [
2061
2087
  /* @__PURE__ */ o("header", { className: "game-ui-window-titlebar", children: [
2062
- r ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-window-icon", children: r }) : null,
2088
+ d ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: "game-ui-window-icon", children: d }) : null,
2063
2089
  /* @__PURE__ */ e("h3", { className: "game-ui-window-title", children: g }),
2064
2090
  /* @__PURE__ */ o("span", { className: "game-ui-window-actions", children: [
2065
2091
  t ? /* @__PURE__ */ e(
2066
2092
  "button",
2067
2093
  {
2068
- "aria-label": h ? f.restore : f.minimize,
2094
+ "aria-label": h ? y.restore : y.minimize,
2069
2095
  className: "game-ui-icon-button game-ui-window-button",
2070
2096
  onClick: () => w(h ? "normal" : "minimized"),
2071
2097
  type: "button",
2072
- children: /* @__PURE__ */ e(F, { kind: h ? "restore" : "minimize" })
2098
+ children: /* @__PURE__ */ e(W, { kind: h ? "restore" : "minimize" })
2073
2099
  }
2074
2100
  ) : null,
2075
2101
  a ? /* @__PURE__ */ e(
2076
2102
  "button",
2077
2103
  {
2078
- "aria-label": A ? f.restore : f.maximize,
2104
+ "aria-label": A ? y.restore : y.maximize,
2079
2105
  className: "game-ui-icon-button game-ui-window-button",
2080
2106
  onClick: () => w(A ? "normal" : "maximized"),
2081
2107
  type: "button",
2082
- children: /* @__PURE__ */ e(F, { kind: A ? "restore" : "maximize" })
2108
+ children: /* @__PURE__ */ e(W, { kind: A ? "restore" : "maximize" })
2083
2109
  }
2084
2110
  ) : null,
2085
2111
  u ? /* @__PURE__ */ e(
2086
2112
  "button",
2087
2113
  {
2088
- "aria-label": f.close,
2114
+ "aria-label": y.close,
2089
2115
  className: "game-ui-icon-button game-ui-window-button",
2090
2116
  onClick: u,
2091
2117
  type: "button",
2092
- children: /* @__PURE__ */ e(F, { kind: "close" })
2118
+ children: /* @__PURE__ */ e(W, { kind: "close" })
2093
2119
  }
2094
2120
  ) : null
2095
2121
  ] })
@@ -2102,39 +2128,41 @@ function Pi({
2102
2128
  }
2103
2129
  );
2104
2130
  }
2105
- function _i({
2131
+ function Vi({
2106
2132
  children: a,
2107
2133
  className: t,
2108
2134
  closeLabel: i = "Close",
2109
- closeOnBackdrop: l = !0,
2110
- footer: n,
2135
+ closeOnBackdrop: n = !0,
2136
+ footer: l,
2111
2137
  onClose: s,
2112
- open: r,
2113
- size: d = "md",
2114
- title: u
2138
+ open: d,
2139
+ position: r = "center",
2140
+ size: u = "md",
2141
+ title: c
2115
2142
  }) {
2116
- const c = aa(null), b = Y();
2143
+ const b = ta(null), g = _();
2117
2144
  te(() => {
2118
- const v = c.current;
2119
- v && (r && !v.open && v.showModal(), !r && v.open && v.close());
2120
- }, [r]);
2121
- const g = (v) => {
2122
- l && v.target === c.current && s();
2145
+ const v = b.current;
2146
+ v && (d && !v.open && v.showModal(), !d && v.open && v.close());
2147
+ }, [d]);
2148
+ const f = (v) => {
2149
+ n && v.target === b.current && s();
2123
2150
  };
2124
2151
  return /* @__PURE__ */ e(
2125
2152
  "dialog",
2126
2153
  {
2127
- "aria-labelledby": b,
2154
+ "aria-labelledby": g,
2128
2155
  className: ye("game-ui-modal", t),
2129
- "data-size": d,
2156
+ "data-position": r,
2157
+ "data-size": u,
2130
2158
  onCancel: (v) => {
2131
2159
  v.preventDefault(), s();
2132
2160
  },
2133
- onClick: g,
2134
- ref: c,
2161
+ onClick: f,
2162
+ ref: b,
2135
2163
  children: /* @__PURE__ */ o("div", { className: "game-ui-modal-frame", children: [
2136
2164
  /* @__PURE__ */ o("header", { className: "game-ui-modal-header", children: [
2137
- /* @__PURE__ */ e("h2", { className: "game-ui-modal-title", id: b, children: u }),
2165
+ /* @__PURE__ */ e("h2", { className: "game-ui-modal-title", id: g, children: c }),
2138
2166
  /* @__PURE__ */ e(
2139
2167
  "button",
2140
2168
  {
@@ -2142,17 +2170,17 @@ function _i({
2142
2170
  className: "game-ui-icon-button game-ui-window-button",
2143
2171
  onClick: s,
2144
2172
  type: "button",
2145
- children: /* @__PURE__ */ e(F, { kind: "close" })
2173
+ children: /* @__PURE__ */ e(W, { kind: "close" })
2146
2174
  }
2147
2175
  )
2148
2176
  ] }),
2149
- /* @__PURE__ */ e("div", { className: "game-ui-modal-body", children: r ? a : null }),
2150
- n ? /* @__PURE__ */ e("footer", { className: "game-ui-modal-footer", children: n }) : null
2177
+ /* @__PURE__ */ e("div", { className: "game-ui-modal-body", children: d ? a : null }),
2178
+ l ? /* @__PURE__ */ e("footer", { className: "game-ui-modal-footer", children: l }) : null
2151
2179
  ] })
2152
2180
  }
2153
2181
  );
2154
2182
  }
2155
- const ai = [
2183
+ const ti = [
2156
2184
  {
2157
2185
  id: "history-human-long",
2158
2186
  kind: "human",
@@ -2174,7 +2202,7 @@ const ai = [
2174
2202
  speaker: "Table",
2175
2203
  text: "Three votes are locked. One more read can still change the pact."
2176
2204
  }
2177
- ], ii = [
2205
+ ], ni = [
2178
2206
  { id: "history-human-long", kind: "human", meta: "第 2 局 · 公开桌", speaker: "Mika", text: "这个回答像背稿——把每种可能都点了一遍,却从不押一个真实的偏好。" },
2179
2207
  { id: "history-zh-long", kind: "mystery", meta: "第 2 局 · 桌边发言", speaker: "Noa", text: "这段回答太顺了,像是在把所有安全选项都摆出来,却故意不留下能被追问的破绽。" },
2180
2208
  { id: "history-system", kind: "system", meta: "即将揭晓", speaker: "牌桌", text: "三票已锁定。再读一轮,仍可能改写这份密约。" }
@@ -2287,7 +2315,7 @@ const ai = [
2287
2315
  responsive: { desktop: "desktop", mobileLandscape: "mobile landscape" },
2288
2316
  orientation: { title: "Please rotate your device", body: "Clay game surfaces are tuned for a landscape table. Rotate before live chat so keyboard, emotes, and vote rail do not crush the playfield.", cta: "Try landscape", badge: "Landscape only", hint: "Rotate manually if this browser blocks automatic landscape lock." },
2289
2317
  historyLabel: "Round history",
2290
- history: ai
2318
+ history: ti
2291
2319
  },
2292
2320
  "zh-CN": {
2293
2321
  triggerLabel: "中",
@@ -2397,9 +2425,9 @@ const ai = [
2397
2425
  responsive: { desktop: "桌面", mobileLandscape: "手机横屏" },
2398
2426
  orientation: { title: "请旋转你的设备", body: "黏土游戏界面是为横屏牌桌调校的。开聊前请先横屏,以免键盘、表情与投票栏挤压牌面。", cta: "试试横屏", badge: "仅限横屏", hint: "若浏览器拦截了自动横屏锁定,请手动旋转。" },
2399
2427
  historyLabel: "回合历史",
2400
- history: ii
2428
+ history: ni
2401
2429
  }
2402
- }, ea = ia(Qe.en), R = () => ta(ea), ti = [
2430
+ }, ea = na(Qe.en), R = () => la(ea), li = [
2403
2431
  { id: "colors", tokens: N },
2404
2432
  { id: "semantic", tokens: ne },
2405
2433
  { id: "typography", tokens: le },
@@ -2411,16 +2439,16 @@ const ai = [
2411
2439
  { id: "targets", tokens: me },
2412
2440
  { id: "assetSizing", tokens: ue }
2413
2441
  ];
2414
- function ni({ id: a, label: t, tokens: i }) {
2442
+ function oi({ id: a, label: t, tokens: i }) {
2415
2443
  return /* @__PURE__ */ o("article", { className: "game-ui-token-card", children: [
2416
2444
  /* @__PURE__ */ e("h3", { children: t }),
2417
- /* @__PURE__ */ e("div", { className: "game-ui-token-grid", children: Object.entries(i).map(([l, n]) => /* @__PURE__ */ o("div", { className: "game-ui-token-row", children: [
2418
- /* @__PURE__ */ e("span", { children: l }),
2419
- /* @__PURE__ */ e("code", { children: String(n) })
2420
- ] }, `${a}-${l}`)) })
2445
+ /* @__PURE__ */ e("div", { className: "game-ui-token-grid", children: Object.entries(i).map(([n, l]) => /* @__PURE__ */ o("div", { className: "game-ui-token-row", children: [
2446
+ /* @__PURE__ */ e("span", { children: n }),
2447
+ /* @__PURE__ */ e("code", { children: String(l) })
2448
+ ] }, `${a}-${n}`)) })
2421
2449
  ] });
2422
2450
  }
2423
- function li() {
2451
+ function si() {
2424
2452
  return /* @__PURE__ */ e("div", { "aria-label": "Clay color swatches", className: "game-ui-swatch-grid", children: Object.entries(N).map(([a, t]) => /* @__PURE__ */ o("figure", { className: "game-ui-swatch", children: [
2425
2453
  /* @__PURE__ */ e("span", { style: { background: t } }),
2426
2454
  /* @__PURE__ */ o("figcaption", { children: [
@@ -2429,7 +2457,7 @@ function li() {
2429
2457
  ] })
2430
2458
  ] }, a)) });
2431
2459
  }
2432
- function oi() {
2460
+ function ri() {
2433
2461
  const { type: a } = R();
2434
2462
  return /* @__PURE__ */ o("div", { className: "game-ui-type-scale", children: [
2435
2463
  /* @__PURE__ */ e("p", { className: "game-ui-type-kicker", children: a.kicker }),
@@ -2439,7 +2467,7 @@ function oi() {
2439
2467
  /* @__PURE__ */ e("small", { children: a.small })
2440
2468
  ] });
2441
2469
  }
2442
- function si() {
2470
+ function ci() {
2443
2471
  const { buttons: a } = R();
2444
2472
  return /* @__PURE__ */ o(B, { title: a.panelTitle, tone: "strong", children: [
2445
2473
  /* @__PURE__ */ o("div", { className: "game-ui-component-row", children: [
@@ -2451,17 +2479,17 @@ function si() {
2451
2479
  /* @__PURE__ */ e(C, { disabled: !0, variant: "secondary", children: a.waiting })
2452
2480
  ] }),
2453
2481
  /* @__PURE__ */ o("div", { className: "game-ui-component-row", children: [
2454
- /* @__PURE__ */ e(ma, { label: a.settingsTip, children: /* @__PURE__ */ e(O, { label: a.settingsTip, children: /* @__PURE__ */ e(L, { icon: "settings", size: "sm" }) }) }),
2482
+ /* @__PURE__ */ e(ga, { label: a.settingsTip, children: /* @__PURE__ */ e(O, { label: a.settingsTip, children: /* @__PURE__ */ e(L, { icon: "settings", size: "sm" }) }) }),
2455
2483
  /* @__PURE__ */ e(O, { label: a.copyInvite, children: /* @__PURE__ */ e(L, { icon: "copy", size: "sm" }) }),
2456
2484
  /* @__PURE__ */ e(S, { tone: "ai", children: a.aiBadge }),
2457
2485
  /* @__PURE__ */ e(S, { tone: "success", children: a.readyBadge }),
2458
2486
  /* @__PURE__ */ e(S, { tone: "warning", children: a.hostGateBadge })
2459
2487
  ] }),
2460
2488
  /* @__PURE__ */ e(Pe, { activeId: "live", label: a.segmentedLabel, options: [{ id: "daily", label: a.segDaily }, { id: "live", label: a.segLive }, { id: "tokens", label: a.segTokens }] }),
2461
- /* @__PURE__ */ e(ua, { activeId: "portal", tabs: [{ id: "portal", label: a.tabsPortal }, { id: "vote", label: a.tabsVote }, { id: "history", label: a.tabsHistory }] }),
2462
- /* @__PURE__ */ e(ha, { items: [{ id: "wave", label: a.wave }, { id: "think", label: a.think }, { id: "doubt", label: a.doubt }], label: a.radialLabel }),
2463
- /* @__PURE__ */ e(ga, { label: a.sliderLabel, max: 100, min: 0, value: 68 }),
2464
- /* @__PURE__ */ e(pa, { checked: !0, label: a.toggleLabel })
2489
+ /* @__PURE__ */ e(pa, { activeId: "portal", tabs: [{ id: "portal", label: a.tabsPortal }, { id: "vote", label: a.tabsVote }, { id: "history", label: a.tabsHistory }] }),
2490
+ /* @__PURE__ */ e(va, { items: [{ id: "wave", label: a.wave }, { id: "think", label: a.think }, { id: "doubt", label: a.doubt }], label: a.radialLabel }),
2491
+ /* @__PURE__ */ e(ha, { label: a.sliderLabel, max: 100, min: 0, value: 68 }),
2492
+ /* @__PURE__ */ e(ba, { checked: !0, label: a.toggleLabel })
2465
2493
  ] });
2466
2494
  }
2467
2495
  function ie() {
@@ -2498,10 +2526,10 @@ function ie() {
2498
2526
  ] })
2499
2527
  ] });
2500
2528
  }
2501
- function ri() {
2529
+ function di() {
2502
2530
  const { modals: a } = R();
2503
2531
  return /* @__PURE__ */ o("div", { className: "game-ui-preview-two-up", children: [
2504
- /* @__PURE__ */ o(ca, { title: a.dialogTitle, children: [
2532
+ /* @__PURE__ */ o(ma, { title: a.dialogTitle, children: [
2505
2533
  /* @__PURE__ */ e("p", { children: a.dialogBody }),
2506
2534
  /* @__PURE__ */ o(K, { label: a.actionsLabel, children: [
2507
2535
  /* @__PURE__ */ e(C, { variant: "primary", children: a.confirm }),
@@ -2516,17 +2544,17 @@ function ri() {
2516
2544
  ] })
2517
2545
  ] });
2518
2546
  }
2519
- function ci() {
2547
+ function mi() {
2520
2548
  const { cards: a } = R();
2521
2549
  return /* @__PURE__ */ o("div", { className: "game-ui-preview-two-up", children: [
2522
- /* @__PURE__ */ e(B, { title: a.fanTitle, tone: "strong", children: /* @__PURE__ */ e(Na, { label: a.fanLabel, cards: [{ id: "human", icon: "home", kicker: a.human, title: "Mika" }, { id: "ai", icon: "ai", kicker: a.ai, title: "River" }, { id: "sympathizer", icon: "crown", kicker: a.sympathizer, title: "Noa" }] }) }),
2550
+ /* @__PURE__ */ e(B, { title: a.fanTitle, tone: "strong", children: /* @__PURE__ */ e(Sa, { label: a.fanLabel, cards: [{ id: "human", icon: "home", kicker: a.human, title: "Mika" }, { id: "ai", icon: "ai", kicker: a.ai, title: "River" }, { id: "sympathizer", icon: "crown", kicker: a.sympathizer, title: "Noa" }] }) }),
2523
2551
  /* @__PURE__ */ o(B, { title: a.assetTitle, tone: "strong", children: [
2524
2552
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: a.assetNote }),
2525
2553
  /* @__PURE__ */ o("div", { className: "game-ui-asset-path-grid", children: [
2526
- /* @__PURE__ */ e("code", { children: V.catalog.manifest }),
2527
- /* @__PURE__ */ e("code", { children: V.catalog.sourceCatalog }),
2528
- /* @__PURE__ */ e("code", { children: V.buttons.primary }),
2529
- /* @__PURE__ */ e("code", { children: V.icons.trophy })
2554
+ /* @__PURE__ */ e("code", { children: H.catalog.manifest }),
2555
+ /* @__PURE__ */ e("code", { children: H.catalog.sourceCatalog }),
2556
+ /* @__PURE__ */ e("code", { children: H.buttons.primary }),
2557
+ /* @__PURE__ */ e("code", { children: H.icons.trophy })
2530
2558
  ] })
2531
2559
  ] })
2532
2560
  ] });
@@ -2549,7 +2577,7 @@ const Ae = [
2549
2577
  { id: "foundation", label: "Foundation", icon: "home", items: [{ id: "floor-2x2", label: "2x2 floor", status: "selected" }] },
2550
2578
  { id: "wall", label: "Walls", icon: "card", items: [{ id: "wall-solid", label: "Solid wall", status: "ready" }] }
2551
2579
  ];
2552
- function di() {
2580
+ function ui() {
2553
2581
  return /* @__PURE__ */ o("div", { className: "game-ui-preview-two-up", children: [
2554
2582
  /* @__PURE__ */ e(
2555
2583
  Te,
@@ -2646,7 +2674,7 @@ const Re = [
2646
2674
  validationWarnings: [{ id: "collision", label: "Collision risk", description: "Fence crosses an existing chair placement.", tone: "warning" }]
2647
2675
  }
2648
2676
  ];
2649
- function mi() {
2677
+ function gi() {
2650
2678
  return /* @__PURE__ */ o("div", { className: "game-ui-preview-two-up", children: [
2651
2679
  /* @__PURE__ */ e(
2652
2680
  Ce,
@@ -2672,7 +2700,7 @@ function mi() {
2672
2700
  )
2673
2701
  ] });
2674
2702
  }
2675
- function ui() {
2703
+ function pi() {
2676
2704
  return /* @__PURE__ */ e(
2677
2705
  He,
2678
2706
  {
@@ -2688,7 +2716,7 @@ function ui() {
2688
2716
  ]
2689
2717
  }
2690
2718
  ),
2691
- movementPad: /* @__PURE__ */ e(Ea, { helpText: "WASD or arrows", label: "Move avatar" }),
2719
+ movementPad: /* @__PURE__ */ e(Ma, { helpText: "WASD or arrows", label: "Move avatar" }),
2692
2720
  assetLibrary: /* @__PURE__ */ e(
2693
2721
  De,
2694
2722
  {
@@ -2720,7 +2748,7 @@ function ui() {
2720
2748
  }
2721
2749
  );
2722
2750
  }
2723
- const gi = [
2751
+ const hi = [
2724
2752
  {
2725
2753
  id: "starter",
2726
2754
  label: "Starter pieces",
@@ -2732,7 +2760,7 @@ const gi = [
2732
2760
  ]
2733
2761
  }
2734
2762
  ];
2735
- function pi() {
2763
+ function bi() {
2736
2764
  return /* @__PURE__ */ e("div", { className: "game-ui-asset-compression-repro", "aria-label": "Asset card compression repro", children: [
2737
2765
  { id: "comfortable", label: "Comfortable library", width: "320px" },
2738
2766
  { id: "narrow", label: "Narrow library", width: "156px" },
@@ -2743,7 +2771,7 @@ function pi() {
2743
2771
  De,
2744
2772
  {
2745
2773
  density: "dense",
2746
- groups: gi,
2774
+ groups: hi,
2747
2775
  label: `${a.label} assets`,
2748
2776
  selectedAssetId: "asset-repro-chair",
2749
2777
  title: "Build"
@@ -2751,7 +2779,7 @@ function pi() {
2751
2779
  )
2752
2780
  ] }, a.id)) });
2753
2781
  }
2754
- function hi() {
2782
+ function vi() {
2755
2783
  const { firstSession: a } = R(), t = {
2756
2784
  controls: a.controls,
2757
2785
  emote: a.emote,
@@ -2776,12 +2804,12 @@ function hi() {
2776
2804
  wardrobe: a.wardrobe
2777
2805
  };
2778
2806
  return /* @__PURE__ */ o("div", { className: "game-ui-first-session-preview", children: [
2779
- /* @__PURE__ */ e("div", { className: "game-ui-first-session-world", children: /* @__PURE__ */ e(La, { authenticated: !0, batteryCount: 5, dailyStreak: 3, labels: t, onHistory: () => {
2807
+ /* @__PURE__ */ e("div", { className: "game-ui-first-session-world", children: /* @__PURE__ */ e(Ca, { authenticated: !0, batteryCount: 5, dailyStreak: 3, labels: t, onHistory: () => {
2780
2808
  }, onSettings: () => {
2781
2809
  }, onWardrobe: () => {
2782
2810
  }, playerName: a.playerName }) }),
2783
2811
  /* @__PURE__ */ e("div", { className: "game-ui-first-session-modal-slot", children: /* @__PURE__ */ e(
2784
- Ta,
2812
+ Aa,
2785
2813
  {
2786
2814
  open: !0,
2787
2815
  onDismiss: () => {
@@ -2802,7 +2830,7 @@ function hi() {
2802
2830
  ) })
2803
2831
  ] });
2804
2832
  }
2805
- function bi() {
2833
+ function fi() {
2806
2834
  const { responsive: a } = R();
2807
2835
  return /* @__PURE__ */ o("div", { className: "game-ui-proof-frames", children: [
2808
2836
  /* @__PURE__ */ o("article", { className: "game-ui-proof-frame is-desktop", children: [
@@ -2821,24 +2849,24 @@ function bi() {
2821
2849
  ] })
2822
2850
  ] });
2823
2851
  }
2824
- function vi() {
2852
+ function yi() {
2825
2853
  const { forms: a } = R();
2826
2854
  return /* @__PURE__ */ o("div", { className: "game-ui-preview-two-up", children: [
2827
2855
  /* @__PURE__ */ o(B, { title: a.formsTitle, tone: "strong", children: [
2828
- /* @__PURE__ */ e(H, { hint: a.roomCodeHint, label: a.roomCodeLabel, children: /* @__PURE__ */ e(Le, { placeholder: a.roomCodePlaceholder }) }),
2829
- /* @__PURE__ */ e(H, { label: a.nameLabel, required: !0, children: /* @__PURE__ */ e(Le, { placeholder: a.namePlaceholder }) }),
2830
- /* @__PURE__ */ e(H, { error: a.readError, label: a.readLabel, children: /* @__PURE__ */ e(Ca, { invalid: !0, placeholder: a.readPlaceholder }) }),
2831
- /* @__PURE__ */ e(Aa, { defaultChecked: !0, label: a.rememberLabel })
2856
+ /* @__PURE__ */ e(D, { hint: a.roomCodeHint, label: a.roomCodeLabel, children: /* @__PURE__ */ e(Le, { placeholder: a.roomCodePlaceholder }) }),
2857
+ /* @__PURE__ */ e(D, { label: a.nameLabel, required: !0, children: /* @__PURE__ */ e(Le, { placeholder: a.namePlaceholder }) }),
2858
+ /* @__PURE__ */ e(D, { error: a.readError, label: a.readLabel, children: /* @__PURE__ */ e(Ba, { invalid: !0, placeholder: a.readPlaceholder }) }),
2859
+ /* @__PURE__ */ e(xa, { defaultChecked: !0, label: a.rememberLabel })
2832
2860
  ] }),
2833
2861
  /* @__PURE__ */ o(B, { title: a.displayTitle, tone: "strong", children: [
2834
2862
  /* @__PURE__ */ o("div", { className: "game-ui-component-row", children: [
2835
- /* @__PURE__ */ e($, { name: "Mika Ono", status: "online" }),
2836
- /* @__PURE__ */ e($, { name: "River", size: "lg", status: "busy" }),
2837
- /* @__PURE__ */ e($, { name: "Noa", status: "away" }),
2838
- /* @__PURE__ */ e($, { name: a.guestName, size: "sm" })
2863
+ /* @__PURE__ */ e(j, { name: "Mika Ono", status: "online" }),
2864
+ /* @__PURE__ */ e(j, { name: "River", size: "lg", status: "busy" }),
2865
+ /* @__PURE__ */ e(j, { name: "Noa", status: "away" }),
2866
+ /* @__PURE__ */ e(j, { name: a.guestName, size: "sm" })
2839
2867
  ] }),
2840
- /* @__PURE__ */ e(D, { label: a.revealLabel, showValue: !0, value: 64 }),
2841
- /* @__PURE__ */ e(D, { label: a.batteryLabel, max: 20, showValue: !0, tone: "success", value: 14 }),
2868
+ /* @__PURE__ */ e(U, { label: a.revealLabel, showValue: !0, value: 64 }),
2869
+ /* @__PURE__ */ e(U, { label: a.batteryLabel, max: 20, showValue: !0, tone: "success", value: 14 }),
2842
2870
  /* @__PURE__ */ e(
2843
2871
  P,
2844
2872
  {
@@ -2851,20 +2879,20 @@ function vi() {
2851
2879
  ] })
2852
2880
  ] });
2853
2881
  }
2854
- const fi = pe.filter((a) => _e(a).includes("game")), yi = pe.filter((a) => _e(a).includes("line"));
2882
+ const wi = pe.filter((a) => _e(a).includes("game")), Ni = pe.filter((a) => _e(a).includes("line"));
2855
2883
  function Me({ names: a, style: t }) {
2856
2884
  return /* @__PURE__ */ e("div", { className: "game-ui-icon-grid", children: a.map((i) => /* @__PURE__ */ o("figure", { className: "game-ui-icon-cell", children: [
2857
2885
  /* @__PURE__ */ e(L, { icon: i, size: "lg", style: t }),
2858
2886
  /* @__PURE__ */ e("figcaption", { children: i })
2859
2887
  ] }, `${t}-${i}`)) });
2860
2888
  }
2861
- function wi() {
2862
- return /* @__PURE__ */ e("div", { className: "game-ui-icon-grid", children: va.map((a) => /* @__PURE__ */ o("figure", { className: "game-ui-icon-cell", children: [
2889
+ function ki() {
2890
+ return /* @__PURE__ */ e("div", { className: "game-ui-icon-grid", children: ya.map((a) => /* @__PURE__ */ o("figure", { className: "game-ui-icon-cell", children: [
2863
2891
  /* @__PURE__ */ e("span", { className: "game-ui-asset-icon", "data-icon-size": "lg", "data-icon-style": "game", "aria-hidden": !0, children: /* @__PURE__ */ e("img", { alt: "", src: ze[a] }) }),
2864
2892
  /* @__PURE__ */ e("figcaption", { children: a })
2865
2893
  ] }, `sprite-${a}`)) });
2866
2894
  }
2867
- function Ni() {
2895
+ function Si() {
2868
2896
  const { gallery: a } = R();
2869
2897
  return /* @__PURE__ */ o("div", { className: "game-ui-icon-gallery", children: [
2870
2898
  /* @__PURE__ */ o("section", { className: "game-ui-icon-family", children: [
@@ -2872,104 +2900,104 @@ function Ni() {
2872
2900
  /* @__PURE__ */ e(S, { tone: "success", children: a.gameLabel }),
2873
2901
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: a.gameHint })
2874
2902
  ] }),
2875
- /* @__PURE__ */ e(Me, { names: fi, style: "game" })
2903
+ /* @__PURE__ */ e(Me, { names: wi, style: "game" })
2876
2904
  ] }),
2877
2905
  /* @__PURE__ */ o("section", { className: "game-ui-icon-family", children: [
2878
2906
  /* @__PURE__ */ o("header", { className: "game-ui-icon-family-head", children: [
2879
2907
  /* @__PURE__ */ e(S, { children: a.lineLabel }),
2880
2908
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: a.lineHint })
2881
2909
  ] }),
2882
- /* @__PURE__ */ e(Me, { names: yi, style: "line" })
2910
+ /* @__PURE__ */ e(Me, { names: Ni, style: "line" })
2883
2911
  ] }),
2884
2912
  /* @__PURE__ */ o("section", { className: "game-ui-icon-family", children: [
2885
2913
  /* @__PURE__ */ o("header", { className: "game-ui-icon-family-head", children: [
2886
2914
  /* @__PURE__ */ e(S, { tone: "warning", children: a.spriteLabel }),
2887
2915
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: a.spriteHint })
2888
2916
  ] }),
2889
- /* @__PURE__ */ e(wi, {})
2917
+ /* @__PURE__ */ e(ki, {})
2890
2918
  ] })
2891
2919
  ] });
2892
2920
  }
2893
- function zi({ title: a, body: t }) {
2894
- const [i, l] = M("en"), n = Qe[i], s = a && i === "en" ? a : n.heroTitle, r = t && i === "en" ? t : n.heroBody;
2921
+ function Hi({ title: a, body: t }) {
2922
+ const [i, n] = M("en"), l = Qe[i], s = a && i === "en" ? a : l.heroTitle, d = t && i === "en" ? t : l.heroBody;
2895
2923
  return te(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
2896
2924
  delete document.documentElement.dataset.gameUiPreview;
2897
- }), []), /* @__PURE__ */ e(ea.Provider, { value: n, children: /* @__PURE__ */ o("main", { "aria-label": "Swimmer UI Kit clay preview", className: "game-ui-preview game-ui-clay-preview", children: [
2925
+ }), []), /* @__PURE__ */ e(ea.Provider, { value: l, children: /* @__PURE__ */ o("main", { "aria-label": "Swimmer UI Kit clay preview", className: "game-ui-preview game-ui-clay-preview", children: [
2898
2926
  /* @__PURE__ */ o("header", { className: "game-ui-preview-hero", children: [
2899
2927
  /* @__PURE__ */ e(S, { tone: "ai", children: "@pieai/swimmer-ui-kit" }),
2900
2928
  /* @__PURE__ */ e(
2901
- Sa,
2929
+ Ta,
2902
2930
  {
2903
- currentLabel: n.triggerLabel,
2904
- label: n.langMenuLabel,
2905
- onSelect: (d) => l(d),
2931
+ currentLabel: l.triggerLabel,
2932
+ label: l.langMenuLabel,
2933
+ onSelect: (r) => n(r),
2906
2934
  options: [{ id: "en", label: "English", meta: "DOM UI labels" }, { id: "zh-CN", label: "简体中文", meta: "Host app owned copy" }],
2907
2935
  value: i
2908
2936
  }
2909
2937
  ),
2910
2938
  /* @__PURE__ */ e("h1", { children: s }),
2911
- /* @__PURE__ */ e("p", { children: r })
2939
+ /* @__PURE__ */ e("p", { children: d })
2912
2940
  ] }),
2913
2941
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-token-title", className: "game-ui-preview-section", children: [
2914
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-token-title", children: n.sections.tokens }),
2915
- /* @__PURE__ */ e(li, {}),
2916
- /* @__PURE__ */ e("div", { className: "game-ui-token-ledger", children: ti.map((d) => /* @__PURE__ */ e(ni, { id: d.id, label: n.tokenGroups[d.id] ?? d.id, tokens: d.tokens }, d.id)) })
2942
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-token-title", children: l.sections.tokens }),
2943
+ /* @__PURE__ */ e(si, {}),
2944
+ /* @__PURE__ */ e("div", { className: "game-ui-token-ledger", children: li.map((r) => /* @__PURE__ */ e(oi, { id: r.id, label: l.tokenGroups[r.id] ?? r.id, tokens: r.tokens }, r.id)) })
2917
2945
  ] }),
2918
2946
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-icons-title", className: "game-ui-preview-section", children: [
2919
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-icons-title", children: n.sections.icons }),
2920
- /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: n.iconsIntro }),
2921
- /* @__PURE__ */ e(Ni, {})
2947
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-icons-title", children: l.sections.icons }),
2948
+ /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: l.iconsIntro }),
2949
+ /* @__PURE__ */ e(Si, {})
2922
2950
  ] }),
2923
2951
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-type-title", className: "game-ui-preview-section", children: [
2924
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-type-title", children: n.sections.typography }),
2925
- /* @__PURE__ */ e(oi, {})
2952
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-type-title", children: l.sections.typography }),
2953
+ /* @__PURE__ */ e(ri, {})
2926
2954
  ] }),
2927
2955
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-components-title", className: "game-ui-preview-section", children: [
2928
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-components-title", children: n.sections.components }),
2929
- /* @__PURE__ */ e(si, {}),
2930
- /* @__PURE__ */ e(ie, {}),
2931
- /* @__PURE__ */ e(ri, {}),
2956
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-components-title", children: l.sections.components }),
2932
2957
  /* @__PURE__ */ e(ci, {}),
2933
- /* @__PURE__ */ e(da, { entries: n.history, label: n.historyLabel })
2958
+ /* @__PURE__ */ e(ie, {}),
2959
+ /* @__PURE__ */ e(di, {}),
2960
+ /* @__PURE__ */ e(mi, {}),
2961
+ /* @__PURE__ */ e(ua, { entries: l.history, label: l.historyLabel })
2934
2962
  ] }),
2935
2963
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-forms-title", className: "game-ui-preview-section", children: [
2936
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-forms-title", children: n.sections.forms }),
2937
- /* @__PURE__ */ e(vi, {})
2964
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-forms-title", children: l.sections.forms }),
2965
+ /* @__PURE__ */ e(yi, {})
2938
2966
  ] }),
2939
2967
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-ownmyspace-title", className: "game-ui-preview-section", children: [
2940
2968
  /* @__PURE__ */ e("h2", { id: "game-ui-preview-ownmyspace-title", children: "OwnMySpace game surface pack" }),
2941
- /* @__PURE__ */ e(ui, {})
2969
+ /* @__PURE__ */ e(pi, {})
2942
2970
  ] }),
2943
2971
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-terrain-build-title", className: "game-ui-preview-section", children: [
2944
2972
  /* @__PURE__ */ e("h2", { id: "game-ui-preview-terrain-build-title", children: "Terrain/build tooling" }),
2945
2973
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces." }),
2946
- /* @__PURE__ */ e(di, {})
2974
+ /* @__PURE__ */ e(ui, {})
2947
2975
  ] }),
2948
2976
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-contractor-title", className: "game-ui-preview-section", children: [
2949
2977
  /* @__PURE__ */ e("h2", { id: "game-ui-preview-contractor-title", children: "AI contractor / construction robot UI" }),
2950
2978
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges." }),
2951
- /* @__PURE__ */ e(mi, {})
2979
+ /* @__PURE__ */ e(gi, {})
2952
2980
  ] }),
2953
2981
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-asset-compression-title", className: "game-ui-preview-section", children: [
2954
2982
  /* @__PURE__ */ e("h2", { id: "game-ui-preview-asset-compression-title", children: "Asset card compression proof" }),
2955
2983
  /* @__PURE__ */ e("p", { className: "game-ui-small-copy", children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots." }),
2956
- /* @__PURE__ */ e(pi, {})
2984
+ /* @__PURE__ */ e(bi, {})
2957
2985
  ] }),
2958
2986
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-first-session-title", className: "game-ui-preview-section", children: [
2959
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-first-session-title", children: n.sections.firstSession }),
2960
- /* @__PURE__ */ e(hi, {})
2987
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-first-session-title", children: l.sections.firstSession }),
2988
+ /* @__PURE__ */ e(vi, {})
2961
2989
  ] }),
2962
2990
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-orientation-title", className: "game-ui-preview-section", children: [
2963
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-orientation-title", children: n.sections.orientation }),
2964
- /* @__PURE__ */ e(ka, { badgeLabel: n.orientation.badge, body: n.orientation.body, cta: n.orientation.cta, manualHint: n.orientation.hint, preview: !0, title: n.orientation.title })
2991
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-orientation-title", children: l.sections.orientation }),
2992
+ /* @__PURE__ */ e(La, { badgeLabel: l.orientation.badge, body: l.orientation.body, cta: l.orientation.cta, manualHint: l.orientation.hint, preview: !0, title: l.orientation.title })
2965
2993
  ] }),
2966
2994
  /* @__PURE__ */ o("section", { "aria-labelledby": "game-ui-preview-responsive-title", className: "game-ui-preview-section", children: [
2967
- /* @__PURE__ */ e("h2", { id: "game-ui-preview-responsive-title", children: n.sections.responsive }),
2968
- /* @__PURE__ */ e(bi, {})
2995
+ /* @__PURE__ */ e("h2", { id: "game-ui-preview-responsive-title", children: l.sections.responsive }),
2996
+ /* @__PURE__ */ e(fi, {})
2969
2997
  ] })
2970
2998
  ] }) });
2971
2999
  }
2972
- const Vi = {
3000
+ const Di = {
2973
3001
  ...ne,
2974
3002
  ...le,
2975
3003
  ...oe,
@@ -2978,15 +3006,41 @@ const Vi = {
2978
3006
  ...ce,
2979
3007
  ...de,
2980
3008
  ...ue
2981
- }, Hi = me;
3009
+ }, Ui = me, $i = [
3010
+ "--game-ui-bg",
3011
+ "--game-ui-surface",
3012
+ "--game-ui-surface-raised",
3013
+ "--game-ui-panel",
3014
+ "--game-ui-panel-strong",
3015
+ "--game-ui-panel-deep",
3016
+ "--game-ui-text",
3017
+ "--game-ui-text-muted",
3018
+ "--game-ui-accent",
3019
+ "--game-ui-accent-bright",
3020
+ "--game-ui-secondary",
3021
+ "--game-ui-success",
3022
+ "--game-ui-success-bright",
3023
+ "--game-ui-danger",
3024
+ "--game-ui-danger-bright",
3025
+ "--game-ui-warning",
3026
+ "--game-ui-focus-ring",
3027
+ "--game-ui-border-subtle",
3028
+ "--game-ui-border-strong",
3029
+ "--game-ui-disabled",
3030
+ "--game-ui-ink-deep",
3031
+ "--game-ui-border-ink",
3032
+ "--game-ui-wood",
3033
+ "--game-ui-ink-title",
3034
+ "--game-ui-ink-heading"
3035
+ ];
2982
3036
  export {
2983
- V as CLAY_ASSETS,
2984
- ba as CLAY_ASSET_BASE_PATH,
3037
+ H as CLAY_ASSETS,
3038
+ fa as CLAY_ASSET_BASE_PATH,
2985
3039
  ue as CLAY_ASSET_SIZE_TOKENS,
2986
3040
  N as CLAY_COLOR_TOKENS,
2987
3041
  re as CLAY_ELEVATION_TOKENS,
2988
3042
  ze as CLAY_GAME_SPRITES,
2989
- va as CLAY_GAME_SPRITE_NAMES,
3043
+ ya as CLAY_GAME_SPRITE_NAMES,
2990
3044
  pe as CLAY_ICON_NAMES,
2991
3045
  ge as CLAY_ICON_VARIANTS,
2992
3046
  de as CLAY_LAYER_TOKENS,
@@ -2996,77 +3050,78 @@ export {
2996
3050
  oe as CLAY_SPACE_TOKENS,
2997
3051
  me as CLAY_TARGET_TOKENS,
2998
3052
  le as CLAY_TYPE_TOKENS,
2999
- Ai as CLAY_UI_TOKENS,
3000
- La as FirstSessionHud,
3001
- Ta as FirstSessionOnboarding,
3002
- ai as GAME_UI_PREVIEW_MESSAGES,
3003
- Hi as GAME_UI_TARGETS,
3004
- Vi as GAME_UI_TOKENS,
3005
- U as GameActionGrid,
3006
- Ma as GameAssetCard,
3053
+ xi as CLAY_UI_TOKENS,
3054
+ Ca as FirstSessionHud,
3055
+ Aa as FirstSessionOnboarding,
3056
+ ti as GAME_UI_PREVIEW_MESSAGES,
3057
+ Ui as GAME_UI_TARGETS,
3058
+ $i as GAME_UI_THEME_CONTRACT,
3059
+ Di as GAME_UI_TOKENS,
3060
+ $ as GameActionGrid,
3061
+ Oa as GameAssetCard,
3007
3062
  L as GameAssetIcon,
3008
3063
  De as GameAssetLibrary,
3009
- $ as GameAvatar,
3064
+ j as GameAvatar,
3010
3065
  S as GameBadge,
3011
3066
  Xe as GameBeforeAfterToggle,
3012
- Va as GameBrushControls,
3013
- Ua as GameBuildLibrary,
3067
+ Da as GameBrushControls,
3068
+ ja as GameBuildLibrary,
3014
3069
  C as GameButton,
3015
- Ti as GameCallout,
3016
- Na as GameCardFan,
3017
- Aa as GameCheckbox,
3018
- Oi as GameCollapsiblePanel,
3070
+ Ai as GameCallout,
3071
+ Sa as GameCardFan,
3072
+ xa as GameCheckbox,
3073
+ _i as GameCollapsiblePanel,
3019
3074
  $e as GameCompactGameDrawer,
3020
- Xa as GameCompactJobDrawer,
3075
+ ei as GameCompactJobDrawer,
3021
3076
  Je as GameConstructionApprovalBar,
3022
3077
  ae as GameConstructionJobCard,
3023
3078
  qe as GameConstructionProgress,
3024
3079
  Ce as GameContractorPanel,
3025
- ca as GameDialog,
3080
+ ma as GameDialog,
3026
3081
  P as GameEmptyState,
3027
3082
  ve as GameFactList,
3028
- H as GameField,
3029
- da as GameHistoryPanel,
3083
+ D as GameField,
3084
+ ua as GameHistoryPanel,
3030
3085
  Ve as GameHud,
3031
3086
  K as GameHudActions,
3032
3087
  O as GameIconButton,
3033
3088
  Le as GameInput,
3034
- Sa as GameLanguageMenu,
3089
+ Ta as GameLanguageMenu,
3035
3090
  Se as GameLoadingState,
3036
- Ha as GameMaterialSwatches,
3037
- _i as GameModal,
3038
- Ea as GameMovementPad,
3039
- Gi as GameObjectToolbar,
3040
- ka as GameOrientationGate,
3091
+ Ua as GameMaterialSwatches,
3092
+ Vi as GameModal,
3093
+ Ma as GameMovementPad,
3094
+ Pi as GameObjectToolbar,
3095
+ La as GameOrientationGate,
3041
3096
  B as GamePanel,
3042
3097
  Ue as GamePlacementToolbar,
3043
- D as GameProgress,
3044
- Ci as GamePrompt,
3045
- ha as GameRadialMenu,
3098
+ U as GameProgress,
3099
+ Bi as GamePrompt,
3100
+ va as GameRadialMenu,
3046
3101
  Ze as GameRobotCrewStatus,
3047
- Ri as GameSceneHudLayout,
3102
+ Gi as GameSceneHudLayout,
3048
3103
  Pe as GameSegmentedControl,
3049
3104
  He as GameShell,
3050
- ga as GameSlider,
3105
+ ha as GameSlider,
3051
3106
  q as GameStageTile,
3052
- Mi as GameStatList,
3053
- ua as GameTabs,
3107
+ Oi as GameStatList,
3108
+ pa as GameTabs,
3054
3109
  Te as GameTerrainBuildToolbox,
3055
- _a as GameTerrainModeControl,
3056
- za as GameTerrainToolStrip,
3057
- Ca as GameTextArea,
3110
+ Va as GameTerrainModeControl,
3111
+ Ha as GameTerrainToolStrip,
3112
+ Ba as GameTextArea,
3058
3113
  ke as GameToast,
3059
- pa as GameToggle,
3060
- ma as GameTooltip,
3061
- zi as GameUiPreview,
3062
- Da as GameUndoRedoActions,
3063
- Pi as GameWindowPanel,
3064
- xi as getClayAssetMode,
3065
- Ei as getClayCatalogPaths,
3114
+ ba as GameToggle,
3115
+ ga as GameTooltip,
3116
+ Hi as GameUiPreview,
3117
+ $a as GameUndoRedoActions,
3118
+ zi as GameWindowPanel,
3119
+ Ei as getClayAssetMode,
3120
+ Mi as getClayCatalogPaths,
3066
3121
  Z as getClayIconPath,
3067
3122
  _e as getClayIconStyles,
3068
- Ii as getClaySourceAssetPath,
3069
- ra as playGameInteractionSound,
3070
- sa as playGameInteractionSoundForContext,
3071
- Bi as setClayAssetMode
3123
+ Ri as getClaySourceAssetPath,
3124
+ da as playGameInteractionSound,
3125
+ ca as playGameInteractionSoundForContext,
3126
+ Ii as setClayAssetMode
3072
3127
  };