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