@pieai/swimmer-ui-kit 2.2.0 → 2.3.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
@@ -286,7 +286,7 @@ var w = {
286
286
  desktopProofHeightPx: 900,
287
287
  mobileLandscapeProofWidthPx: 844,
288
288
  mobileLandscapeProofHeightPx: 390
289
- }, te = {
289
+ }, I = {
290
290
  iconSm: "var(--game-ui-asset-icon-sm)",
291
291
  iconMd: "var(--game-ui-asset-icon-md)",
292
292
  iconLg: "var(--game-ui-asset-icon-lg)",
@@ -298,7 +298,7 @@ var w = {
298
298
  terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)",
299
299
  buildRailCardSize: "var(--game-ui-build-rail-card-size)",
300
300
  brushNumberWidth: "var(--game-ui-brush-number-width)"
301
- }, ne = {
301
+ }, te = {
302
302
  colors: w,
303
303
  semantic: O,
304
304
  typography: k,
@@ -309,52 +309,52 @@ var w = {
309
309
  motion: N,
310
310
  layers: P,
311
311
  targets: F,
312
- assetSizing: te,
312
+ assetSizing: I,
313
313
  overlayGlass: D,
314
314
  liquidMetal: T,
315
315
  liquidGooey: E
316
- }, re = 2, ie = 48e4, ae = 2, I = ie, L = 0;
317
- function oe(e, t) {
316
+ }, ne = 2, re = 48e4, L = 2, R = re, z = 0;
317
+ function ie(e, t) {
318
318
  return Number.isFinite(e) ? Math.max(0, Math.floor(e)) : t;
319
319
  }
320
- function se() {
320
+ function ae() {
321
321
  return {
322
- maxAnimatedGroups: ae,
323
- maxFilterArea: I,
324
- activeGroups: L
322
+ maxAnimatedGroups: L,
323
+ maxFilterArea: R,
324
+ activeGroups: z
325
325
  };
326
326
  }
327
- function R(e) {
327
+ function B(e) {
328
328
  if (typeof e == "number") {
329
- ae = oe(e, 0);
329
+ L = ie(e, 0);
330
330
  return;
331
331
  }
332
- e.maxAnimatedGroups !== void 0 && (ae = oe(e.maxAnimatedGroups, 0)), e.maxFilterArea !== void 0 && (I = oe(e.maxFilterArea, 0));
332
+ e.maxAnimatedGroups !== void 0 && (L = ie(e.maxAnimatedGroups, 0)), e.maxFilterArea !== void 0 && (R = ie(e.maxFilterArea, 0));
333
333
  }
334
- function ce(e) {
335
- return L >= ae || (Number.isFinite(e) ? Math.max(0, e) : Infinity) > I ? !1 : (L += 1, !0);
334
+ function oe(e) {
335
+ return z >= L || (Number.isFinite(e) ? Math.max(0, e) : Infinity) > R ? !1 : (z += 1, !0);
336
336
  }
337
- function le() {
338
- L > 0 && --L;
337
+ function se() {
338
+ z > 0 && --z;
339
339
  }
340
340
  //#endregion
341
341
  //#region src/liquidGooeyFilter.tsx
342
- var ue = "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 -29.5", de = 1.3, fe = 1 / .3902;
343
- function pe(e, t) {
344
- return e <= 0 ? t : Math.min(t, fe * e / de);
342
+ var ce = "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 -29.5", le = 1.3, ue = 1 / .3902;
343
+ function de(e, t) {
344
+ return e <= 0 ? t : Math.min(t, ue * e / le);
345
345
  }
346
- var me = {
346
+ var fe = {
347
347
  waviness: 0,
348
348
  wavinessFreq: .018
349
349
  };
350
- function he(e) {
350
+ function pe(e) {
351
351
  return e.spread === 0 ? "shape" : "bin";
352
352
  }
353
- function ge(e, t) {
353
+ function me(e, t) {
354
354
  return t !== null || e.some((e) => e.spread !== 0);
355
355
  }
356
- function _e({ index: e, shadow: t }) {
357
- let n = [], r = he(t), i = r;
356
+ function he({ index: e, shadow: t }) {
357
+ let n = [], r = pe(t), i = r;
358
358
  return t.spread !== 0 && (n.push(/* @__PURE__ */ m("feMorphology", {
359
359
  in: i,
360
360
  operator: t.spread > 0 ? "erode" : "dilate",
@@ -384,7 +384,7 @@ function _e({ index: e, shadow: t }) {
384
384
  result: `shadow-${e}`
385
385
  }, "fill")), /* @__PURE__ */ m(p, { children: n });
386
386
  }
387
- function z({ index: e, shadow: t }) {
387
+ function ge({ index: e, shadow: t }) {
388
388
  let n = [], r = "shape";
389
389
  return t.spread !== 0 && (n.push(/* @__PURE__ */ m("feMorphology", {
390
390
  in: "bin",
@@ -410,7 +410,7 @@ function z({ index: e, shadow: t }) {
410
410
  result: `shadow-${e}`
411
411
  }, "fill")), /* @__PURE__ */ m(p, { children: n });
412
412
  }
413
- function B({ stroke: e }) {
413
+ function _e({ stroke: e }) {
414
414
  let t = [];
415
415
  return t.push(/* @__PURE__ */ m("feMorphology", {
416
416
  in: "bin",
@@ -432,8 +432,8 @@ function B({ stroke: e }) {
432
432
  result: "stroke-out"
433
433
  }, "fill")), /* @__PURE__ */ m(p, { children: t });
434
434
  }
435
- function ve({ blur: e, contrast: t, shadows: n, stroke: r, gloss: i = 0, waviness: a = me.waviness, wavinessFreq: o = me.wavinessFreq }) {
436
- let s = pe(e, t), c = Math.round((.5 - 5 / 12 * s) * 100) / 100, l = a > 0;
435
+ function ve({ blur: e, contrast: t, shadows: n, stroke: r, gloss: i = 0, waviness: a = fe.waviness, wavinessFreq: o = fe.wavinessFreq }) {
436
+ let s = de(e, t), c = Math.round((.5 - 5 / 12 * s) * 100) / 100, l = a > 0;
437
437
  return /* @__PURE__ */ h(p, { children: [
438
438
  /* @__PURE__ */ m("feGaussianBlur", {
439
439
  in: "SourceGraphic",
@@ -501,20 +501,20 @@ function ve({ blur: e, contrast: t, shadows: n, stroke: r, gloss: i = 0, wavines
501
501
  result: "shape"
502
502
  })
503
503
  ] }) : null,
504
- ge(n, r) ? /* @__PURE__ */ m("feColorMatrix", {
504
+ me(n, r) ? /* @__PURE__ */ m("feColorMatrix", {
505
505
  in: "shape",
506
506
  type: "matrix",
507
- values: ue,
507
+ values: ce,
508
508
  result: "bin"
509
509
  }) : null,
510
- n.map((e, t) => e.inset ? /* @__PURE__ */ m(_e, {
510
+ n.map((e, t) => e.inset ? /* @__PURE__ */ m(he, {
511
511
  index: t,
512
512
  shadow: e
513
- }, t) : /* @__PURE__ */ m(z, {
513
+ }, t) : /* @__PURE__ */ m(ge, {
514
514
  index: t,
515
515
  shadow: e
516
516
  }, t)),
517
- r ? /* @__PURE__ */ m(B, { stroke: r }) : null,
517
+ r ? /* @__PURE__ */ m(_e, { stroke: r }) : null,
518
518
  n.length > 0 || r ? /* @__PURE__ */ h("feMerge", { children: [
519
519
  n.map((e, t) => e.inset ? -1 : t).filter((e) => e >= 0).reverse().map((e) => /* @__PURE__ */ m("feMergeNode", { in: `shadow-${e}` }, e)),
520
520
  /* @__PURE__ */ m("feMergeNode", { in: "shape" }),
@@ -1051,7 +1051,7 @@ function st(e, t, n, r, i, a) {
1051
1051
  ];
1052
1052
  return {
1053
1053
  path: Ee(-e.w / 2, -e.h / 2, e.w, e.h, A, a),
1054
- transform: `translate(${ot(e.cx)} ${ot(e.cy)}) scale(${ot(t.scale)})`,
1054
+ transform: `translate(${ot(e.cx)} ${ot(e.cy)}) scale(${ot(t.scale)} ${ot(t.scaleY ?? t.scale)})`,
1055
1055
  contentBlur: E,
1056
1056
  moving: !k
1057
1057
  };
@@ -1073,6 +1073,11 @@ var ct = {
1073
1073
  stiffness: 320,
1074
1074
  damping: 17,
1075
1075
  mass: 1
1076
+ },
1077
+ wobbly: {
1078
+ stiffness: 400,
1079
+ damping: 9.6,
1080
+ mass: 1
1076
1081
  }
1077
1082
  }, lt = 1 / 240;
1078
1083
  function ut(e) {
@@ -1162,7 +1167,8 @@ function vt(e) {
1162
1167
  observe: e.observe ?? !1,
1163
1168
  x: _t(e.x, 0),
1164
1169
  y: _t(e.y, 0),
1165
- scale: Math.max(.01, _t(e.scale, 1))
1170
+ scale: Math.max(.01, _t(e.scale, 1)),
1171
+ scaleY: Math.max(.01, _t(e.scaleY ?? e.scale, 1))
1166
1172
  };
1167
1173
  return e.effect !== void 0 && (t.effect = e.effect), e.morph !== void 0 && (t.morph = e.morph), e.bend !== void 0 && (t.bend = e.bend), e.transition !== void 0 && (t.transition = e.transition), e.delay !== void 0 && (t.delay = Math.max(0, _t(e.delay, 0))), e.radius !== void 0 && (t.radius = e.radius), e.blob !== void 0 && (t.blob = e.blob), t;
1168
1174
  }
@@ -1170,11 +1176,12 @@ function yt(e) {
1170
1176
  return {
1171
1177
  x: e.x,
1172
1178
  y: e.y,
1173
- scale: e.scale
1179
+ scale: e.scale,
1180
+ scaleY: e.scaleY
1174
1181
  };
1175
1182
  }
1176
1183
  function bt(e, t) {
1177
- return e.x === t.x && e.y === t.y && e.scale === t.scale;
1184
+ return e.x === t.x && e.y === t.y && e.scale === t.scale && e.scaleY === t.scaleY;
1178
1185
  }
1179
1186
  function xt(e, t) {
1180
1187
  return e.effect === t.effect && e.observe === t.observe && JSON.stringify(e.morph) === JSON.stringify(t.morph) && JSON.stringify(e.bend) === JSON.stringify(t.bend) && JSON.stringify(e.transition) === JSON.stringify(t.transition) && e.delay === t.delay && St(e.radius) === St(t.radius);
@@ -1276,7 +1283,7 @@ var Tt = class {
1276
1283
  setFilterArea(e) {
1277
1284
  let t = Number.isFinite(e) ? Math.max(0, e) : Infinity;
1278
1285
  if (!(Math.abs(t - this.filterArea) < .5)) {
1279
- if (this.filterArea = t, this.claimed && t > se().maxFilterArea) {
1286
+ if (this.filterArea = t, this.claimed && t > ae().maxFilterArea) {
1280
1287
  for (let e of this.items.values()) this.snapEntry(e), this.resetMoveEntry(e), this.resetDynamicEntry(e);
1281
1288
  this.releaseClaim(), this.setMode(this.reducedMotion ? "reduced" : "static");
1282
1289
  }
@@ -1315,19 +1322,19 @@ var Tt = class {
1315
1322
  ensureClaim() {
1316
1323
  if (this.claimed) return !0;
1317
1324
  let e = this.getFilterArea();
1318
- return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), ce(this.filterArea) ? (this.claimed = !0, this.moveOptions = Me(this.getGroup()), !0) : (this.warnBudgetFallback(), !1);
1325
+ return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), oe(this.filterArea) ? (this.claimed = !0, this.moveOptions = Me(this.getGroup()), !0) : (this.warnBudgetFallback(), !1);
1319
1326
  }
1320
1327
  warnBudgetFallback() {
1321
1328
  if (this.budgetWarningEmitted) return;
1322
1329
  this.budgetWarningEmitted = !0;
1323
- let e = se(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
1330
+ let e = ae(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
1324
1331
  console.warn(`LiquidGroup: the liquid animation budget is insufficient (${t}); degrading to static rendering for this group.`);
1325
1332
  }
1326
1333
  revive() {
1327
1334
  this.disposed && (this.disposed = !1, this.mutationObserver = null, this.removeListeners.length = 0, this.lastFrameTime = null, this.budgetWarningEmitted = !1);
1328
1335
  }
1329
1336
  releaseClaim() {
1330
- this.claimed &&= (le(), !1);
1337
+ this.claimed &&= (se(), !1);
1331
1338
  }
1332
1339
  isBend(e) {
1333
1340
  return e.config.effect === "bend";
@@ -1404,7 +1411,8 @@ var Tt = class {
1404
1411
  return e.current = {
1405
1412
  x: n.from.x + (n.to.x - n.from.x) * i,
1406
1413
  y: n.from.y + (n.to.y - n.from.y) * i,
1407
- scale: n.from.scale + (n.to.scale - n.from.scale) * i
1414
+ scale: n.from.scale + (n.to.scale - n.from.scale) * i,
1415
+ scaleY: n.from.scaleY + (n.to.scaleY - n.from.scaleY) * i
1408
1416
  }, this.applyHost(e), r >= 1 ? (e.current = { ...n.to }, e.motion = null, e.host.style.willChange = "", this.applyHost(e), !1) : !0;
1409
1417
  }
1410
1418
  applyHost(e) {
@@ -1412,7 +1420,7 @@ var Tt = class {
1412
1420
  e.ownTransform && e.host.style.transform === e.ownTransform && e.host.style.removeProperty("transform"), e.ownTransform = "";
1413
1421
  return;
1414
1422
  }
1415
- let t = `translate(${wt(e.current.x)}px, ${wt(e.current.y)}px) scale(${wt(e.current.scale)})`;
1423
+ let t = `translate(${wt(e.current.x)}px, ${wt(e.current.y)}px) scale(${wt(e.current.scale)}, ${wt(e.current.scaleY)})`;
1416
1424
  e.ownTransform !== t && (e.ownTransform = t, e.host.style.transform = t);
1417
1425
  }
1418
1426
  createTailElements(e) {
@@ -1444,7 +1452,8 @@ var Tt = class {
1444
1452
  return {
1445
1453
  cx: t.x + t.w / 2 + e.current.x,
1446
1454
  cy: t.y + t.h / 2 + e.current.y,
1447
- scale: e.current.scale
1455
+ scale: e.current.scale,
1456
+ scaleY: e.current.scaleY
1448
1457
  };
1449
1458
  }
1450
1459
  readBox(e, t) {
@@ -1471,6 +1480,7 @@ var Tt = class {
1471
1480
  cx: t.x + t.w / 2 + (n ? 0 : e.current.x),
1472
1481
  cy: t.y + t.h / 2 + (n ? 0 : e.current.y),
1473
1482
  scale: n ? 1 : e.current.scale,
1483
+ scaleY: n ? 1 : e.current.scaleY,
1474
1484
  w: t.w,
1475
1485
  h: t.h,
1476
1486
  r: t.r[0] ?? 0
@@ -1504,7 +1514,7 @@ var Tt = class {
1504
1514
  };
1505
1515
  }
1506
1516
  paintEntry(e, t) {
1507
- let n = t.x + e.current.x + t.w * (1 - e.current.scale) / 2, r = t.y + e.current.y + t.h * (1 - e.current.scale) / 2, i = `translate(${wt(n)} ${wt(r)}) scale(${wt(e.current.scale)})`, a = Ee(0, 0, t.w, t.h, t.r, e.config.blob), o = `${a}|${i}`;
1517
+ let n = t.x + e.current.x + t.w * (1 - e.current.scale) / 2, r = t.y + e.current.y + t.h * (1 - e.current.scaleY) / 2, i = `translate(${wt(n)} ${wt(r)}) scale(${wt(e.current.scale)} ${wt(e.current.scaleY)})`, a = Ee(0, 0, t.w, t.h, t.r, e.config.blob), o = `${a}|${i}`;
1508
1518
  return e.lastPaint === o ? !1 : (e.lastPaint = o, e.blob.setAttribute("d", a), e.blob.setAttribute("transform", i), !0);
1509
1519
  }
1510
1520
  loop = (e) => {
@@ -1995,14 +2005,14 @@ var gn = class {
1995
2005
  e.painted !== t && (e.painted = t, e.target.style.opacity = t ? "0" : e.previousOpacity);
1996
2006
  }
1997
2007
  releaseClaim() {
1998
- this.claimed &&= (le(), !1);
2008
+ this.claimed &&= (se(), !1);
1999
2009
  }
2000
2010
  ensureClaim(e, t, n) {
2001
2011
  if (this.claimed) return !0;
2002
- if (!ce(un(e, t, n))) {
2012
+ if (!oe(un(e, t, n))) {
2003
2013
  if (!this.budgetWarningEmitted) {
2004
2014
  this.budgetWarningEmitted = !0;
2005
- let e = se(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
2015
+ let e = ae(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
2006
2016
  console.warn(`LiquidGroup: the Melt/dissolve image filter budget is insufficient (${t}); degrading to crisp imagery for this group.`);
2007
2017
  }
2008
2018
  return !1;
@@ -2165,7 +2175,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2165
2175
  }, w = Math.hypot(e.w, e.h) / 2 * f * c, T = Math.hypot(t.w, t.h) / 2 * f * c, E = {
2166
2176
  x: (S.x + C.x) / 2,
2167
2177
  y: (S.y + C.y) / 2
2168
- }, D = C.x - S.x, O = C.y - S.y, k = Math.max(.001, Math.hypot(D, O)), A = -O / k, ee = D / k, j = Math.max(0, (e.w + t.w) / 2 - Math.abs(D)), M = Math.max(0, (e.h + t.h) / 2 - Math.abs(O)), N = .5 * (j * Math.abs(A) + M * Math.abs(ee)) * c, P = Math.round(Math.atan2(ee, A) * 180 / Math.PI), F = Math.round(v * c * 100) / 100, te = Math.round((2 + (u - 2) * c) * 10) / 10, ne = Math.round(_ * c * 10) / 10, re = Math.round(te * 2.5 * 10) / 10, ie = Math.round((.4 + (2 + u * .8) * c) * 10) / 10, ae = `translate(${e.x}, ${e.y})`, I = `translate(${t.x}, ${t.y})`;
2178
+ }, D = C.x - S.x, O = C.y - S.y, k = Math.max(.001, Math.hypot(D, O)), A = -O / k, ee = D / k, j = Math.max(0, (e.w + t.w) / 2 - Math.abs(D)), M = Math.max(0, (e.h + t.h) / 2 - Math.abs(O)), N = .5 * (j * Math.abs(A) + M * Math.abs(ee)) * c, P = Math.round(Math.atan2(ee, A) * 180 / Math.PI), F = Math.round(v * c * 100) / 100, I = Math.round((2 + (u - 2) * c) * 10) / 10, te = Math.round(_ * c * 10) / 10, ne = Math.round(I * 2.5 * 10) / 10, re = Math.round((.4 + (2 + u * .8) * c) * 10) / 10, L = `translate(${e.x}, ${e.y})`, R = `translate(${t.x}, ${t.y})`;
2169
2179
  return /* @__PURE__ */ h("svg", {
2170
2180
  "aria-hidden": "true",
2171
2181
  focusable: "false",
@@ -2215,7 +2225,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2215
2225
  children: [
2216
2226
  /* @__PURE__ */ m("feGaussianBlur", {
2217
2227
  in: "SourceGraphic",
2218
- stdDeviation: te,
2228
+ stdDeviation: I,
2219
2229
  result: "b"
2220
2230
  }),
2221
2231
  /* @__PURE__ */ m("feColorMatrix", {
@@ -2226,7 +2236,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2226
2236
  }),
2227
2237
  /* @__PURE__ */ m("feGaussianBlur", {
2228
2238
  in: "SourceGraphic",
2229
- stdDeviation: re,
2239
+ stdDeviation: ne,
2230
2240
  result: "bc"
2231
2241
  }),
2232
2242
  /* @__PURE__ */ m("feComposite", {
@@ -2245,7 +2255,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2245
2255
  /* @__PURE__ */ m("feDisplacementMap", {
2246
2256
  in: "mix",
2247
2257
  in2: "wn",
2248
- scale: ne,
2258
+ scale: te,
2249
2259
  xChannelSelector: "R",
2250
2260
  yChannelSelector: "G",
2251
2261
  result: "warped"
@@ -2344,7 +2354,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2344
2354
  }),
2345
2355
  /* @__PURE__ */ m("feGaussianBlur", {
2346
2356
  in: "SourceGraphic",
2347
- stdDeviation: te,
2357
+ stdDeviation: I,
2348
2358
  result: "mb"
2349
2359
  }),
2350
2360
  /* @__PURE__ */ m("feColorMatrix", {
@@ -2363,7 +2373,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2363
2373
  /* @__PURE__ */ m("feDisplacementMap", {
2364
2374
  in: "mg",
2365
2375
  in2: "mwn",
2366
- scale: ne,
2376
+ scale: te,
2367
2377
  xChannelSelector: "R",
2368
2378
  yChannelSelector: "G",
2369
2379
  result: "mshape"
@@ -2399,7 +2409,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2399
2409
  y: "-40%",
2400
2410
  width: "180%",
2401
2411
  height: "180%",
2402
- children: /* @__PURE__ */ m("feGaussianBlur", { stdDeviation: ie })
2412
+ children: /* @__PURE__ */ m("feGaussianBlur", { stdDeviation: re })
2403
2413
  }),
2404
2414
  /* @__PURE__ */ h("mask", {
2405
2415
  id: `${l}-ma`,
@@ -2411,7 +2421,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2411
2421
  children: [/* @__PURE__ */ m("g", {
2412
2422
  filter: `url(#${l}-edge)`,
2413
2423
  children: /* @__PURE__ */ m("g", {
2414
- transform: ae,
2424
+ transform: L,
2415
2425
  children: /* @__PURE__ */ m("rect", {
2416
2426
  width: e.w,
2417
2427
  height: e.h,
@@ -2441,7 +2451,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2441
2451
  children: [/* @__PURE__ */ m("g", {
2442
2452
  filter: `url(#${l}-edge)`,
2443
2453
  children: /* @__PURE__ */ m("g", {
2444
- transform: I,
2454
+ transform: R,
2445
2455
  children: /* @__PURE__ */ m("rect", {
2446
2456
  width: t.w,
2447
2457
  height: t.h,
@@ -2465,7 +2475,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2465
2475
  /* @__PURE__ */ h("g", {
2466
2476
  filter: `url(#${l}-goo)`,
2467
2477
  children: [/* @__PURE__ */ m("g", {
2468
- transform: ae,
2478
+ transform: L,
2469
2479
  children: /* @__PURE__ */ m("rect", {
2470
2480
  width: e.w,
2471
2481
  height: e.h,
@@ -2473,7 +2483,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2473
2483
  fill: `url(#${l}-pa)`
2474
2484
  })
2475
2485
  }), /* @__PURE__ */ m("g", {
2476
- transform: I,
2486
+ transform: R,
2477
2487
  children: /* @__PURE__ */ m("rect", {
2478
2488
  width: t.w,
2479
2489
  height: t.h,
@@ -2487,7 +2497,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2487
2497
  children: /* @__PURE__ */ h("g", {
2488
2498
  filter: `url(#${l}-marble)`,
2489
2499
  children: [/* @__PURE__ */ m("g", {
2490
- transform: ae,
2500
+ transform: L,
2491
2501
  children: /* @__PURE__ */ m("rect", {
2492
2502
  width: e.w,
2493
2503
  height: e.h,
@@ -2495,7 +2505,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2495
2505
  fill: `url(#${l}-pa)`
2496
2506
  })
2497
2507
  }), /* @__PURE__ */ m("g", {
2498
- transform: I,
2508
+ transform: R,
2499
2509
  children: /* @__PURE__ */ m("rect", {
2500
2510
  width: t.w,
2501
2511
  height: t.h,
@@ -2508,7 +2518,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2508
2518
  /* @__PURE__ */ m("g", {
2509
2519
  mask: `url(#${l}-ma)`,
2510
2520
  children: /* @__PURE__ */ m("g", {
2511
- transform: ae,
2521
+ transform: L,
2512
2522
  children: /* @__PURE__ */ m("rect", {
2513
2523
  width: e.w,
2514
2524
  height: e.h,
@@ -2520,7 +2530,7 @@ function _n({ a: e, b: t, srcA: n, srcB: r, opts: i, width: a, height: o, prox:
2520
2530
  /* @__PURE__ */ m("g", {
2521
2531
  mask: `url(#${l}-mb)`,
2522
2532
  children: /* @__PURE__ */ m("g", {
2523
- transform: I,
2533
+ transform: R,
2524
2534
  children: /* @__PURE__ */ m("rect", {
2525
2535
  width: t.w,
2526
2536
  height: t.h,
@@ -2809,6 +2819,7 @@ function Dn(e) {
2809
2819
  "x",
2810
2820
  "y",
2811
2821
  "scale",
2822
+ "scaleY",
2812
2823
  "transition",
2813
2824
  "delay",
2814
2825
  "radius",
@@ -2824,12 +2835,12 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2824
2835
  w: 0,
2825
2836
  h: 0
2826
2837
  }), [ee, j] = d({
2827
- waviness: me.waviness,
2828
- wavinessFreq: me.wavinessFreq
2829
- }), [M, N] = d(0), P = u(0), F = Ot(), te = y === "reduced" || F, [ne, re] = d(te ? "reduced" : "static"), ae = Math.max(0, Cn(e, 6)), I = Math.max(1, Cn(t, 18)), L = Math.max(0, Cn(a, 24)), oe = Math.max(0, Cn(g ?? ee.waviness, me.waviness)), se = v !== !1 && Math.max(0, Cn(v ?? .3, ye)), R = V(oe, k.w > 0 && k.h > 0 ? Math.min(k.w, k.h) : 0, se), ce = Math.max(0, Cn(_ ?? ee.wavinessFreq, me.wavinessFreq)), le = wn(f, T.current), ue = wn(p, T.current), de = l(() => jt(le), [le]), fe = l(() => Ft(de), [de]), pe = l(() => Pt(de), [de]), he = l(() => Mt(ue), [ue]), ge = Math.ceil(ae * 3 + L + It(fe) + (he ? he.width : 0) + R), _e = u(ge);
2838
+ waviness: fe.waviness,
2839
+ wavinessFreq: fe.wavinessFreq
2840
+ }), [M, N] = d(0), P = u(0), F = Ot(), I = y === "reduced" || F, [te, ne] = d(I ? "reduced" : "static"), L = Math.max(0, Cn(e, 6)), R = Math.max(1, Cn(t, 18)), z = Math.max(0, Cn(a, 24)), ie = Math.max(0, Cn(g ?? ee.waviness, fe.waviness)), ae = v !== !1 && Math.max(0, Cn(v ?? .3, ye)), B = V(ie, k.w > 0 && k.h > 0 ? Math.min(k.w, k.h) : 0, ae), oe = Math.max(0, Cn(_ ?? ee.wavinessFreq, fe.wavinessFreq)), se = wn(f, T.current), ce = wn(p, T.current), le = l(() => jt(se), [se]), ue = l(() => Ft(le), [le]), de = l(() => Pt(le), [le]), pe = l(() => Mt(ce), [ce]), me = Math.ceil(L * 3 + z + It(ue) + (pe ? pe.width : 0) + B), he = u(me);
2841
+ he.current = me;
2842
+ let ge = Math.ceil(me + M), _e = u(ge);
2830
2843
  _e.current = ge;
2831
- let z = Math.ceil(ge + M), B = u(z);
2832
- B.current = z;
2833
2844
  let H = `liquid-gooey-${Sn(s())}`, be = i((e) => {
2834
2845
  T.current = e, typeof w == "function" ? w(e) : w && (w.current = e);
2835
2846
  }, [w]), xe = i((e) => O(e), []);
@@ -2837,8 +2848,8 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2837
2848
  let e = T.current;
2838
2849
  if (!e) return;
2839
2850
  let t = {
2840
- waviness: Math.max(0, g === void 0 ? Tn(E.waviness, e, me.waviness) : Cn(g, me.waviness)),
2841
- wavinessFreq: Math.max(0, _ === void 0 ? Tn(E.wavinessFreq, e, me.wavinessFreq) : Cn(_, me.wavinessFreq))
2851
+ waviness: Math.max(0, g === void 0 ? Tn(E.waviness, e, fe.waviness) : Cn(g, fe.waviness)),
2852
+ wavinessFreq: Math.max(0, _ === void 0 ? Tn(E.wavinessFreq, e, fe.wavinessFreq) : Cn(_, fe.wavinessFreq))
2842
2853
  };
2843
2854
  j((e) => e.waviness === t.waviness && e.wavinessFreq === t.wavinessFreq ? e : t);
2844
2855
  }, [g, _]);
@@ -2846,9 +2857,9 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2846
2857
  getGroup: () => T.current,
2847
2858
  getFilterArea: () => {
2848
2859
  let e = T.current;
2849
- return e ? (e.offsetWidth + (_e.current + P.current) * 2) * (e.offsetHeight + (_e.current + P.current) * 2) : 0;
2860
+ return e ? (e.offsetWidth + (he.current + P.current) * 2) * (e.offsetHeight + (he.current + P.current) * 2) : 0;
2850
2861
  },
2851
- onModeChange: re,
2862
+ onModeChange: ne,
2852
2863
  onFeaturePaddingChange: (e) => {
2853
2864
  P.current = e, N((t) => Math.abs(t - e) < .5 ? t : e);
2854
2865
  },
@@ -2862,24 +2873,24 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2862
2873
  w: e.offsetWidth,
2863
2874
  h: e.offsetHeight
2864
2875
  };
2865
- A((e) => e.w === t.w && e.h === t.h ? e : t), U.setFilterArea((t.w + B.current * 2) * (t.h + B.current * 2));
2876
+ A((e) => e.w === t.w && e.h === t.h ? e : t), U.setFilterArea((t.w + _e.current * 2) * (t.h + _e.current * 2));
2866
2877
  };
2867
2878
  if (t(), typeof ResizeObserver > "u") return;
2868
2879
  let n = new ResizeObserver(t);
2869
2880
  return n.observe(e), () => n.disconnect();
2870
- }, [U, z]), o(() => {
2871
- U.setReducedMotion(te);
2872
- }, [U, te]), o(() => () => U.dispose(), [U]);
2881
+ }, [U, ge]), o(() => {
2882
+ U.setReducedMotion(I);
2883
+ }, [U, I]), o(() => () => U.dispose(), [U]);
2873
2884
  let Ce = Math.max(1, k.w), we = Math.max(1, k.h), Te = En("game-ui-liquid-group", b);
2874
2885
  return /* @__PURE__ */ h("div", {
2875
2886
  ...C,
2876
2887
  ref: be,
2877
2888
  className: Te,
2878
- "data-liquid-filter-area": Math.round((k.w + z * 2) * (k.h + z * 2)),
2879
- "data-liquid-filter-budget": ie,
2889
+ "data-liquid-filter-area": Math.round((k.w + ge * 2) * (k.h + ge * 2)),
2890
+ "data-liquid-filter-budget": re,
2880
2891
  "data-liquid-feature-padding": Math.round(M * 10) / 10,
2881
- "data-liquid-motion": ne,
2882
- "data-liquid-waviness": Math.round(R * 100) / 100,
2892
+ "data-liquid-motion": te,
2893
+ "data-liquid-waviness": Math.round(B * 100) / 100,
2883
2894
  style: x,
2884
2895
  children: [
2885
2896
  /* @__PURE__ */ h("svg", {
@@ -2887,24 +2898,24 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2887
2898
  className: "game-ui-liquid-silhouette",
2888
2899
  "data-liquid-gooey-silhouette": "",
2889
2900
  focusable: "false",
2890
- style: pe ? { filter: pe } : void 0,
2901
+ style: de ? { filter: de } : void 0,
2891
2902
  viewBox: `0 0 ${Ce} ${we}`,
2892
2903
  children: [/* @__PURE__ */ m("defs", { children: /* @__PURE__ */ m("filter", {
2893
2904
  colorInterpolationFilters: "sRGB",
2894
2905
  filterUnits: "userSpaceOnUse",
2895
- height: we + z * 2,
2906
+ height: we + ge * 2,
2896
2907
  id: H,
2897
- width: Ce + z * 2,
2898
- x: -z,
2899
- y: -z,
2908
+ width: Ce + ge * 2,
2909
+ x: -ge,
2910
+ y: -ge,
2900
2911
  children: /* @__PURE__ */ m(ve, {
2901
- blur: ae,
2902
- contrast: I,
2912
+ blur: L,
2913
+ contrast: R,
2903
2914
  gloss: n,
2904
- shadows: fe,
2905
- stroke: he,
2906
- waviness: R,
2907
- wavinessFreq: ce
2915
+ shadows: ue,
2916
+ stroke: pe,
2917
+ waviness: B,
2918
+ wavinessFreq: oe
2908
2919
  })
2909
2920
  }) }), /* @__PURE__ */ m("g", {
2910
2921
  ref: xe,
@@ -2930,95 +2941,97 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
2930
2941
  })
2931
2942
  ]
2932
2943
  });
2933
- }), kn = n(function({ effect: e, melt: t, dissolve: n, x: r = 0, y: a = 0, scale: d = 1, transition: g, delay: _, radius: v, blob: y, morph: b, bend: x, observe: S, className: C, style: w, children: T, ...E }, D) {
2934
- let { portal: O, engine: k, follow: A, imageMelt: ee } = xn(), j = `liquid-item-${Sn(s())}`, M = u(null), N = u(null), P = u(null), F = u(null), te = JSON.stringify(n ?? null), ne = n !== void 0 && n !== !1, re = l(() => {
2935
- let t = e === "morph" || e === "bend" ? e : void 0, n = t === "bend", i = e === "bend" || A && b === void 0 && e !== "morph" || ne && b === void 0 && e !== "morph" ? void 0 : b ?? {}, o = {
2944
+ }), kn = n(function({ effect: e, melt: t, dissolve: n, x: r = 0, y: a = 0, scale: d = 1, scaleY: g, transition: _, delay: v, radius: y, blob: b, morph: x, bend: S, observe: C, className: w, style: T, children: E, ...D }, O) {
2945
+ let { portal: k, engine: A, follow: ee, imageMelt: j } = xn(), M = `liquid-item-${Sn(s())}`, N = u(null), P = u(null), F = u(null), I = u(null), te = JSON.stringify(n ?? null), ne = n !== void 0 && n !== !1, re = l(() => {
2946
+ let t = e === "morph" || e === "bend" ? e : void 0, n = t === "bend", i = e === "bend" || ee && x === void 0 && e !== "morph" || ne && x === void 0 && e !== "morph" ? void 0 : x ?? {}, o = {
2936
2947
  ...t === void 0 ? {} : { effect: t },
2937
2948
  ...i === void 0 ? {} : { morph: i },
2938
- ...x === void 0 ? {} : { bend: x },
2939
- ...S === void 0 && !n ? {} : { observe: n || S },
2949
+ ...S === void 0 ? {} : { bend: S },
2950
+ ...C === void 0 && !n ? {} : { observe: n || C },
2940
2951
  x: Cn(r, 0),
2941
2952
  y: Cn(a, 0),
2942
- scale: Cn(d, 1)
2953
+ scale: Cn(d, 1),
2954
+ ...g === void 0 ? {} : { scaleY: Cn(g, 1) }
2943
2955
  };
2944
- return g !== void 0 && (o.transition = g), _ !== void 0 && (o.delay = _), v !== void 0 && (o.radius = v), y !== void 0 && (o.blob = y), o;
2956
+ return _ !== void 0 && (o.transition = _), v !== void 0 && (o.delay = v), y !== void 0 && (o.radius = y), b !== void 0 && (o.blob = b), o;
2945
2957
  }, [
2946
- x,
2947
- y,
2948
- _,
2949
- e,
2950
- A,
2951
- ne,
2952
- b,
2953
2958
  S,
2959
+ b,
2954
2960
  v,
2961
+ e,
2962
+ ee,
2963
+ ne,
2964
+ x,
2965
+ C,
2966
+ y,
2955
2967
  d,
2956
2968
  g,
2969
+ _,
2957
2970
  r,
2958
2971
  a
2959
2972
  ]);
2960
- P.current === null && (P.current = re);
2961
- let ie = i((e) => {
2962
- M.current = e, typeof D == "function" ? D(e) : D && (D.current = e);
2963
- }, [D]);
2973
+ F.current === null && (F.current = re);
2974
+ let L = i((e) => {
2975
+ N.current = e, typeof O == "function" ? O(e) : O && (O.current = e);
2976
+ }, [O]);
2964
2977
  return c(() => {
2965
- let e = M.current, t = N.current;
2966
- if (!(!O || !e || !t || !P.current)) return k.register({
2967
- id: j,
2978
+ let e = N.current, t = P.current;
2979
+ if (!(!k || !e || !t || !F.current)) return A.register({
2980
+ id: M,
2968
2981
  host: e,
2969
2982
  blob: t,
2970
- config: P.current
2983
+ config: F.current
2971
2984
  });
2972
2985
  }, [
2973
- k,
2974
- j,
2975
- O
2986
+ A,
2987
+ M,
2988
+ k
2976
2989
  ]), c(() => {
2977
- k.update(j, re);
2990
+ A.update(M, re);
2978
2991
  }, [
2979
2992
  re,
2980
- k,
2981
- j
2993
+ A,
2994
+ M
2982
2995
  ]), c(() => () => {
2983
- F.current?.unregister(), F.current = null;
2984
- }, [ee]), c(() => {
2996
+ I.current?.unregister(), I.current = null;
2997
+ }, [j]), c(() => {
2985
2998
  if (e === "move" || n === void 0 || n === !1) {
2986
- F.current?.unregister(), F.current = null;
2999
+ I.current?.unregister(), I.current = null;
2987
3000
  return;
2988
3001
  }
2989
- let t = M.current;
3002
+ let t = N.current;
2990
3003
  if (t) {
2991
- if (F.current) {
2992
- F.current.update(n);
3004
+ if (I.current) {
3005
+ I.current.update(n);
2993
3006
  return;
2994
3007
  }
2995
- F.current = Qt(ee, t, n);
3008
+ I.current = Qt(j, t, n);
2996
3009
  }
2997
3010
  }, [
2998
3011
  te,
2999
3012
  e,
3000
- ee
3013
+ j
3001
3014
  ]), o(() => {
3002
3015
  let t = e;
3003
3016
  t === "move" && console.warn("[swimmer-ui] effect=\"move\" is not an item effect. Use <LiquidGroup motion=\"follow\"> for selection and progress."), !(t !== "move" || !ne) && console.warn("[swimmer-ui] dissolve is ignored for effect=\"move\" because Move intentionally lags the measured image rect.");
3004
3017
  }, [e, ne]), c(() => {
3005
- let e = M.current;
3018
+ let e = N.current;
3006
3019
  if (!e) return;
3007
3020
  let t = e.firstElementChild;
3008
3021
  if (!t) return;
3009
3022
  let n = window.getComputedStyle(t), r = n.borderStyle !== "none" && n.borderWidth !== "0px" && n.borderWidth !== "", i = n.outlineStyle !== "none" && n.outlineWidth !== "0px" && n.outlineWidth !== "", a = n.boxShadow && n.boxShadow !== "none";
3010
3023
  (r || i || a) && console.warn("LiquidGroup.Item children should not have their own border, outline, or box-shadow. They exist on the content layer and will not merge with the liquid silhouette. Use the `stroke` and `shadow` props on <LiquidGroup> instead.");
3011
3024
  }, []), /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m("div", {
3012
- ...E,
3013
- ref: ie,
3014
- className: En("game-ui-liquid-item", C),
3015
- style: w,
3016
- children: T
3017
- }), O ? f(/* @__PURE__ */ m("path", {
3018
- ref: N,
3025
+ ...D,
3026
+ ref: L,
3027
+ className: En("game-ui-liquid-item", w),
3028
+ style: T,
3029
+ children: E
3030
+ }), k ? f(/* @__PURE__ */ m("path", {
3031
+ ref: P,
3019
3032
  d: "",
3020
3033
  "data-liquid-gooey-blob": ""
3021
- }), O) : null] });
3034
+ }), k) : null] });
3022
3035
  }), An = n(function(e, t) {
3023
3036
  let { imageMelt: n } = xn();
3024
3037
  if (e.effect !== "melt") return /* @__PURE__ */ m(kn, {
@@ -3053,7 +3066,7 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
3053
3066
  bounce: .35,
3054
3067
  contentBlur: 0
3055
3068
  },
3056
- transition: "bouncy"
3069
+ transition: "wobbly"
3057
3070
  }
3058
3071
  },
3059
3072
  settle: {
@@ -3074,7 +3087,7 @@ var On = n(function({ blur: e = 6, contrast: t = 18, gloss: n = 0, fill: r = "va
3074
3087
  bounce: .55,
3075
3088
  contentBlur: 0
3076
3089
  },
3077
- transition: "bouncy"
3090
+ transition: "wobbly"
3078
3091
  }
3079
3092
  },
3080
3093
  merge: {
@@ -3177,36 +3190,44 @@ function Fn(e, t) {
3177
3190
  //#region src/LiquidSurface.tsx
3178
3191
  var In = {
3179
3192
  press: {
3180
- scale: .95,
3181
- y: 1.5
3193
+ scale: 1.05,
3194
+ scaleY: .9,
3195
+ y: 2
3182
3196
  },
3183
3197
  settle: {
3184
3198
  scale: 1,
3199
+ scaleY: 1,
3185
3200
  y: 0
3186
3201
  },
3187
3202
  fill: {
3188
3203
  scale: 1,
3204
+ scaleY: 1,
3189
3205
  y: 0
3190
3206
  },
3191
3207
  drain: {
3192
- scale: .92,
3193
- y: 0
3208
+ scale: 1.08,
3209
+ scaleY: .84,
3210
+ y: 4
3194
3211
  },
3195
3212
  merge: {
3196
3213
  scale: 1,
3214
+ scaleY: 1,
3197
3215
  y: 0
3198
3216
  },
3199
3217
  follow: {
3200
3218
  scale: 1,
3219
+ scaleY: 1,
3201
3220
  y: 0
3202
3221
  }
3203
3222
  }, Ln = { settle: {
3204
- scale: .97,
3205
- y: -6
3223
+ scale: .94,
3224
+ scaleY: 1.08,
3225
+ y: -8
3206
3226
  } };
3207
3227
  function Rn({ children: e, form: t = "press", active: n = !1, fill: r = "var(--game-ui-liquid-surface-fill, var(--game-ui-surface-raised))", stroke: i, shadow: a, radius: o = 999, className: s, style: c }) {
3208
3228
  let u = Ot(), d = l(() => Pn(t), [t]), f = l(() => Fn(t), [t]), p = n && !u, g = p ? In[t] : Ln[t] ?? {
3209
3229
  scale: 1,
3230
+ scaleY: 1,
3210
3231
  y: 0
3211
3232
  };
3212
3233
  return /* @__PURE__ */ h("span", {
@@ -3236,6 +3257,7 @@ function Rn({ children: e, form: t = "press", active: n = !1, fill: r = "var(--g
3236
3257
  ...f.dissolve === void 0 ? {} : { dissolve: f.dissolve && p },
3237
3258
  radius: o,
3238
3259
  scale: g.scale,
3260
+ scaleY: g.scaleY,
3239
3261
  ...f.transition === void 0 ? {} : { transition: f.transition },
3240
3262
  y: g.y,
3241
3263
  children: /* @__PURE__ */ m("span", { className: "game-ui-liquid-surface__fill" })
@@ -3724,7 +3746,7 @@ function fr(e, t, n, r) {
3724
3746
  function A(t) {
3725
3747
  e.bindFramebuffer(e.FRAMEBUFFER, t ? t.fbo : null), e.viewport(0, 0, t ? t.w : b, t ? t.h : x), e.drawArrays(e.TRIANGLES, 0, 3);
3726
3748
  }
3727
- let ee = new Float32Array(nr.length), j = new Float32Array(ir.length), M = 0, N = 0, P = 0, F = performance.now(), te = [
3749
+ let ee = new Float32Array(nr.length), j = new Float32Array(ir.length), M = 0, N = 0, P = 0, F = performance.now(), I = [
3728
3750
  0,
3729
3751
  1,
3730
3752
  2
@@ -3733,61 +3755,61 @@ function fr(e, t, n, r) {
3733
3755
  y: 0,
3734
3756
  t: -99,
3735
3757
  on: 0
3736
- })), ne = /* @__PURE__ */ new Float32Array(12), re = 0, ie = 0, ae = 0, I = {
3758
+ })), te = /* @__PURE__ */ new Float32Array(12), ne = 0, re = 0, L = 0, R = {
3737
3759
  x: 0,
3738
3760
  y: 0
3739
- }, L = {
3761
+ }, z = {
3740
3762
  x: 0,
3741
3763
  y: 0
3742
- }, oe = 0, se = 0, R = {
3764
+ }, ie = 0, ae = 0, B = {
3743
3765
  over: !1,
3744
3766
  press: !1,
3745
3767
  focus: !1
3746
3768
  };
3747
- function ce(e, t) {
3748
- let n = te[re];
3749
- n && (re = (re + 1) % te.length, n.x = e, n.y = t, n.t = P, n.on = 1);
3769
+ function oe(e, t) {
3770
+ let n = I[ne];
3771
+ n && (ne = (ne + 1) % I.length, n.x = e, n.y = t, n.t = P, n.on = 1);
3750
3772
  }
3751
- function le(e) {
3773
+ function se(e) {
3752
3774
  let t = n.getBoundingClientRect(), r = t.height || 1;
3753
3775
  return [(e.clientX - (t.left + t.width / 2)) / r, (e.clientY - (t.top + t.height / 2)) / r];
3754
3776
  }
3755
- function ue() {
3756
- N = R.over || R.press || R.focus ? 1 : 0, ae = +!!R.press;
3777
+ function ce() {
3778
+ N = B.over || B.press || B.focus ? 1 : 0, L = +!!B.press;
3757
3779
  }
3758
- let de = window.matchMedia("(prefers-reduced-motion: reduce)"), fe = null, pe = 0, me = !1, he = !1;
3759
- function ge() {
3780
+ let le = window.matchMedia("(prefers-reduced-motion: reduce)"), ue = null, de = 0, fe = !1, pe = !1;
3781
+ function me() {
3760
3782
  let e = getComputedStyle(n);
3761
3783
  return rr.base = sr(e, "--game-ui-liquid-metal-rest", rr.base), rr.speed = sr(e, "--game-ui-liquid-metal-sweep-speed", rr.speed), tr.disp = sr(e, "--game-ui-liquid-metal-dispersion", tr.disp), ar.glow = sr(e, "--game-ui-liquid-metal-bloom", ar.glow), { accent: or(getComputedStyle(O).color) };
3762
3784
  }
3763
- function _e(t) {
3764
- if (pe = 0, me || he) return;
3785
+ function he(t) {
3786
+ if (de = 0, fe || pe) return;
3765
3787
  let r = (t - F) / 1e3;
3766
3788
  F = t;
3767
3789
  let l = Math.min(r, 1 / 20);
3768
- de.matches || (P += l);
3790
+ le.matches || (P += l);
3769
3791
  let u = N > M ? 1 - .0012 ** l : 1 - 12e-5 ** l;
3770
3792
  M += (N - M) * u, Math.abs(N - M) < 8e-4 && (M = N);
3771
- let d = ae > ie ? 1 - 1e-9 ** l : 1 - .004 ** l;
3772
- ie += (ae - ie) * d, Math.abs(ae - ie) < .002 && (ie = ae);
3793
+ let d = L > re ? 1 - 1e-9 ** l : 1 - .004 ** l;
3794
+ re += (L - re) * d, Math.abs(L - re) < .002 && (re = L);
3773
3795
  let f = !1;
3774
- for (let e = 0; e < te.length; e += 1) {
3775
- let t = te[e];
3776
- t && (t.on && P - t.t > 4 && (t.on = 0), t.on && (f = !0), ne[e * 4] = t.x, ne[e * 4 + 1] = t.y, ne[e * 4 + 2] = t.t, ne[e * 4 + 3] = t.on);
3796
+ for (let e = 0; e < I.length; e += 1) {
3797
+ let t = I[e];
3798
+ t && (t.on && P - t.t > 4 && (t.on = 0), t.on && (f = !0), te[e * 4] = t.x, te[e * 4 + 1] = t.y, te[e * 4 + 2] = t.t, te[e * 4 + 3] = t.on);
3777
3799
  }
3778
- let p = 1 - Y.ptrLag ** +l, O = (I.x - L.x) * p, re = (I.y - L.y) * p;
3779
- L.x += O, L.y += re;
3780
- let ce = Math.min(Math.hypot(O, re) / Math.max(l, .001) / Y.ptrVref, 1);
3781
- se += (ce - se) * (1 - (ce > se ? .001 : .02) ** l);
3782
- let le = R.over || R.press ? 1 : 0;
3783
- oe += (le - oe) * (1 - .004 ** l), Math.abs(le - oe) < .002 && (oe = le), R.over = n.matches(":hover"), R.focus = n.matches(":focus-visible"), ue(), D && k();
3784
- let z = de.matches && !f && oe < .002 ? `${M}|${ie}|${b}|${x}` : null;
3785
- if (z !== null && z === fe) {
3786
- pe = requestAnimationFrame(_e);
3800
+ let p = 1 - Y.ptrLag ** +l, O = (R.x - z.x) * p, ne = (R.y - z.y) * p;
3801
+ z.x += O, z.y += ne;
3802
+ let oe = Math.min(Math.hypot(O, ne) / Math.max(l, .001) / Y.ptrVref, 1);
3803
+ ae += (oe - ae) * (1 - (oe > ae ? .001 : .02) ** l);
3804
+ let se = B.over || B.press ? 1 : 0;
3805
+ ie += (se - ie) * (1 - .004 ** l), Math.abs(se - ie) < .002 && (ie = se), B.over = n.matches(":hover"), B.focus = n.matches(":focus-visible"), ce(), D && k();
3806
+ let ge = le.matches && !f && ie < .002 ? `${M}|${re}|${b}|${x}` : null;
3807
+ if (ge !== null && ge === ue) {
3808
+ de = requestAnimationFrame(he);
3787
3809
  return;
3788
3810
  }
3789
- fe = z;
3790
- let { accent: B } = ge();
3811
+ ue = ge;
3812
+ let { accent: _e } = me();
3791
3813
  for (let e = 0; e < ee.length; e += 1) {
3792
3814
  let t = nr[e];
3793
3815
  t && (ee[e] = tr[t]);
@@ -3797,7 +3819,7 @@ function fr(e, t, n, r) {
3797
3819
  t && (j[e] = rr[t]);
3798
3820
  }
3799
3821
  let ve = Math.max(C, 110), ye = Math.max(2.4, ve / 516 * 3.2), V = cr(e, i.u), H = cr(e, a.u), be = cr(e, o.u), xe = cr(e, s.u), U = cr(e, c.u);
3800
- e.useProgram(i.p), V.f2("uC", w, T), V.f2("uHalf", S / 2, C / 2), V.f1("uT", P), V.f1("uHover", M), V.f1("uPress", ie), V.fv4("uRip", ne), V.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), V.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), V.f4("uPtr", L.x, L.y, oe, se), V.f4("uPtrK", Y.ptrRad, Y.ptrAmp, Y.ptrFast, Y.ptrRim), V.f3("uAccent", B[0], B[1], B[2]), V.fv1("uP", ee), A(m), e.useProgram(a.p), H.f2("uC", w, T), H.f2("uHalf", S / 2, C / 2), H.f1("uT", P), H.f1("uBw", ye), H.f1("uPress", ie), H.fv4("uRip", ne), H.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), H.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), H.f4("uPtr", L.x, L.y, oe, se), H.f4("uPtrK", Y.ptrRad, Y.ptrAmp, Y.ptrFast, Y.ptrRim), H.f3("uAccent", B[0], B[1], B[2]), H.fv1("uE", j), A(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), be.i1("uTex", 0), be.f1("uAdd", 0), be.f2("uDstTexel", 1 / g.w, 1 / g.h), be.f2("uSrcTexel", 1 / b, 1 / x), A(g), e.useProgram(s.p), xe.i1("uTex", 0), xe.f2("uTexel", 1 / g.w, 1 / g.h);
3822
+ e.useProgram(i.p), V.f2("uC", w, T), V.f2("uHalf", S / 2, C / 2), V.f1("uT", P), V.f1("uHover", M), V.f1("uPress", re), V.fv4("uRip", te), V.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), V.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), V.f4("uPtr", z.x, z.y, ie, ae), V.f4("uPtrK", Y.ptrRad, Y.ptrAmp, Y.ptrFast, Y.ptrRim), V.f3("uAccent", _e[0], _e[1], _e[2]), V.fv1("uP", ee), A(m), e.useProgram(a.p), H.f2("uC", w, T), H.f2("uHalf", S / 2, C / 2), H.f1("uT", P), H.f1("uBw", ye), H.f1("uPress", re), H.fv4("uRip", te), H.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), H.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), H.f4("uPtr", z.x, z.y, ie, ae), H.f4("uPtrK", Y.ptrRad, Y.ptrAmp, Y.ptrFast, Y.ptrRim), H.f3("uAccent", _e[0], _e[1], _e[2]), H.fv1("uE", j), A(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), be.i1("uTex", 0), be.f1("uAdd", 0), be.f2("uDstTexel", 1 / g.w, 1 / g.h), be.f2("uSrcTexel", 1 / b, 1 / x), A(g), e.useProgram(s.p), xe.i1("uTex", 0), xe.f2("uTexel", 1 / g.w, 1 / g.h);
3801
3823
  let Se = ar.soften * (ve * .5) * .95;
3802
3824
  if (Se > .1) {
3803
3825
  let t = Math.min(4, Math.max(1, Math.ceil(Se / 3)));
@@ -3812,45 +3834,45 @@ function fr(e, t, n, r) {
3812
3834
  5.2,
3813
3835
  9
3814
3836
  ].map((e) => e * Ce)) xe.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), xe.f2("uDir", 1, 0), A(y), e.bindTexture(e.TEXTURE_2D, y.tex), xe.f2("uDir", 0, 1), A(v);
3815
- e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), U.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), U.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), U.i1("uGlow", 2), U.f2("uRes", b, x), U.f2("uC", w, T), U.f2("uHalf", S / 2, C / 2), U.f1("uT", P), U.fv4("uRip", ne), U.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), U.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), U.f3("uAccent", B[0], B[1], B[2]), U.f1("uGlowGain", ar.glow), U.f1("uGlowIn", ar.glowIn), U.f1("uOccl", ar.occl), U.f1("uDim", tr.dim), U.f1("uPunch", ar.punch), A(null), pe = requestAnimationFrame(_e);
3837
+ e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), U.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), U.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), U.i1("uGlow", 2), U.f2("uRes", b, x), U.f2("uC", w, T), U.f2("uHalf", S / 2, C / 2), U.f1("uT", P), U.fv4("uRip", te), U.f4("uRipK", Y.speed, Y.width, Y.decay, Y.amp), U.f4("uRipK2", Y.facet, Y.lobes, Y.sharp, Y.emit), U.f3("uAccent", _e[0], _e[1], _e[2]), U.f1("uGlowGain", ar.glow), U.f1("uGlowIn", ar.glowIn), U.f1("uOccl", ar.occl), U.f1("uDim", tr.dim), U.f1("uPunch", ar.punch), A(null), de = requestAnimationFrame(he);
3816
3838
  }
3817
- let z = (e) => {
3839
+ let ge = (e) => {
3818
3840
  if (e.pointerType !== "mouse") return;
3819
- let [t, n] = le(e);
3820
- I.x = t, I.y = n, L.x = t, L.y = n, se = 0, R.over = !0, ue();
3821
- }, B = (e) => {
3822
- e.pointerType === "mouse" && (R.over = !1, ue());
3841
+ let [t, n] = se(e);
3842
+ R.x = t, R.y = n, z.x = t, z.y = n, ae = 0, B.over = !0, ce();
3843
+ }, _e = (e) => {
3844
+ e.pointerType === "mouse" && (B.over = !1, ce());
3823
3845
  }, ve = (e) => {
3824
- if (!R.over && !R.press) return;
3825
- let [t, n] = le(e);
3826
- I.x = t, I.y = n;
3846
+ if (!B.over && !B.press) return;
3847
+ let [t, n] = se(e);
3848
+ R.x = t, R.y = n;
3827
3849
  }, ye = (e) => {
3828
- let [t, n] = le(e);
3829
- I.x = t, I.y = n, R.press = !0, ue(), ce(t, n);
3850
+ let [t, n] = se(e);
3851
+ R.x = t, R.y = n, B.press = !0, ce(), oe(t, n);
3830
3852
  }, V = () => {
3831
- R.press = !1, ue();
3853
+ B.press = !1, ce();
3832
3854
  }, H = () => {
3833
- R.focus = n.matches(":focus-visible"), ue();
3855
+ B.focus = n.matches(":focus-visible"), ce();
3834
3856
  }, be = () => {
3835
- R.focus = !1, ue();
3857
+ B.focus = !1, ce();
3836
3858
  }, xe = (e) => {
3837
- e.key !== "Enter" && e.key !== " " || e.repeat || (R.press = !0, ue(), ce(0, 0));
3859
+ e.key !== "Enter" && e.key !== " " || e.repeat || (B.press = !0, ce(), oe(0, 0));
3838
3860
  }, U = (e) => {
3839
- e.key !== "Enter" && e.key !== " " || (R.press = !1, ue());
3861
+ e.key !== "Enter" && e.key !== " " || (B.press = !1, ce());
3840
3862
  };
3841
- n.addEventListener("pointerenter", z), n.addEventListener("pointerleave", B), window.addEventListener("pointermove", ve, { passive: !0 }), n.addEventListener("pointerdown", ye), window.addEventListener("pointerup", V), window.addEventListener("pointercancel", V), n.addEventListener("focus", H), n.addEventListener("blur", be), n.addEventListener("keydown", xe), n.addEventListener("keyup", U);
3863
+ n.addEventListener("pointerenter", ge), n.addEventListener("pointerleave", _e), window.addEventListener("pointermove", ve, { passive: !0 }), n.addEventListener("pointerdown", ye), window.addEventListener("pointerup", V), window.addEventListener("pointercancel", V), n.addEventListener("focus", H), n.addEventListener("blur", be), n.addEventListener("keydown", xe), n.addEventListener("keyup", U);
3842
3864
  let Se = new ResizeObserver(() => {
3843
3865
  D = !0;
3844
3866
  });
3845
- return Se.observe(r), Se.observe(n), k(), pe = requestAnimationFrame(_e), {
3867
+ return Se.observe(r), Se.observe(n), k(), de = requestAnimationFrame(he), {
3846
3868
  pause: () => {
3847
- me = !0, pe && cancelAnimationFrame(pe), pe = 0;
3869
+ fe = !0, de && cancelAnimationFrame(de), de = 0;
3848
3870
  },
3849
3871
  resume: () => {
3850
- he || (me = !1, F = performance.now(), fe = null, pe ||= requestAnimationFrame(_e));
3872
+ pe || (fe = !1, F = performance.now(), ue = null, de ||= requestAnimationFrame(he));
3851
3873
  },
3852
3874
  dispose: () => {
3853
- he || (he = !0, me = !0, pe && cancelAnimationFrame(pe), pe = 0, Se.disconnect(), n.removeEventListener("pointerenter", z), n.removeEventListener("pointerleave", B), window.removeEventListener("pointermove", ve), n.removeEventListener("pointerdown", ye), window.removeEventListener("pointerup", V), window.removeEventListener("pointercancel", V), n.removeEventListener("focus", H), n.removeEventListener("blur", be), n.removeEventListener("keydown", xe), n.removeEventListener("keyup", U), O.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
3875
+ pe || (pe = !0, fe = !0, de && cancelAnimationFrame(de), de = 0, Se.disconnect(), n.removeEventListener("pointerenter", ge), n.removeEventListener("pointerleave", _e), window.removeEventListener("pointermove", ve), n.removeEventListener("pointerdown", ye), window.removeEventListener("pointerup", V), window.removeEventListener("pointercancel", V), n.removeEventListener("focus", H), n.removeEventListener("blur", be), n.removeEventListener("keydown", xe), n.removeEventListener("keyup", U), O.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
3854
3876
  }
3855
3877
  };
3856
3878
  }
@@ -6699,7 +6721,7 @@ var ba = [
6699
6721
  ...M,
6700
6722
  ...N,
6701
6723
  ...P,
6702
- ...te,
6724
+ ...I,
6703
6725
  ...E
6704
6726
  }, Sa = {
6705
6727
  toneAttr: "data-game-ui-tone",
@@ -6720,6 +6742,7 @@ var ba = [
6720
6742
  components: "Component surface",
6721
6743
  forms: "Forms, inputs and status",
6722
6744
  overlayGlass: "Overlay glass HUD",
6745
+ liquid: "Liquid surface",
6723
6746
  liquidMetal: "Liquid metal CTA",
6724
6747
  firstSession: "First-session shell",
6725
6748
  orientation: "Orientation gate preview",
@@ -6822,6 +6845,17 @@ var ba = [
6822
6845
  sliderLabel: "Effects volume",
6823
6846
  toggleLabel: "Sound on"
6824
6847
  },
6848
+ liquid: {
6849
+ body: "The brand’s own surface. `surface=\"liquid\"` is a second axis on GameButton, not a variant — tone still says what the action means, so a destructive action can be liquid too. The silhouette behind is what deforms; the real button never does, so the hit target, the focus ring and the text stay exactly where they were. Press one.",
6850
+ surfacesTitle: "Flat and liquid, same tone",
6851
+ disabledTitle: "Disabled",
6852
+ disabledBody: "A disabled control drops the liquid entirely. Liquid is how this kit says “press me”, and putting that on something that cannot be pressed is a lie told loudly.",
6853
+ formsTitle: "The named forms",
6854
+ formsBody: "Each name is a measured bundle of blur, contrast, outline and spring — a behaviour to pick, not a physics configuration to tune.",
6855
+ trigger: "Trigger",
6856
+ reset: "Reset",
6857
+ press: "hold to press"
6858
+ },
6825
6859
  liquidMetal: {
6826
6860
  body: "For the few screens that take money or a yes: checkout, sign-up, badge unlock, landing CTA. Not for reading, queues, or the map — a moving rim is a tax you pay every glance, and the aesthetic-usability effect is strongest in the first seconds. More than two of these on a page means the page is the wrong place.",
6827
6861
  cssTitle: "CSS renderer · zero WebGL context",
@@ -6924,6 +6958,7 @@ var ba = [
6924
6958
  components: "组件总览",
6925
6959
  forms: "表单、输入与状态",
6926
6960
  overlayGlass: "叠加玻璃 HUD",
6961
+ liquid: "液体表面",
6927
6962
  liquidMetal: "液态金属 CTA",
6928
6963
  firstSession: "首次会话外壳",
6929
6964
  orientation: "横屏门预览",
@@ -7026,6 +7061,17 @@ var ba = [
7026
7061
  sliderLabel: "音效音量",
7027
7062
  toggleLabel: "声音开"
7028
7063
  },
7064
+ liquid: {
7065
+ body: "品牌自己的表面。`surface=\"liquid\"` 是 GameButton 上的第二个轴,不是一种 variant——色调仍然负责说明这个动作是什么意思,所以危险动作也可以是液体的。变形的是后面那层轮廓,真正的按钮从不变形,点击区、焦点环和文字都停在原地。按一下试试。",
7066
+ surfacesTitle: "同一色调,扁平与液体",
7067
+ disabledTitle: "禁用",
7068
+ disabledBody: "禁用的控件完全不穿液体。液体是这套 UI 说「按我」的方式,把这句话放在按不动的东西上,是大声说一句假话。",
7069
+ formsTitle: "命名形态",
7070
+ formsBody: "每个名字是一组实测过的 blur / contrast / 外形 / 弹簧——挑的是一种行为,不是一组物理参数。",
7071
+ trigger: "触发",
7072
+ reset: "复位",
7073
+ press: "按住看看"
7074
+ },
7029
7075
  liquidMetal: {
7030
7076
  body: "只用在掏钱或拍板的那几屏:付款、注册、徽章解锁、落地页主按钮。阅读、复习队列、3D 地图一个都不要加——会流动的边框在干活面上是每一次都要付的税。美观可用性效应在第一印象最强、随使用次数衰减。一页出现两个以上,就是用错了地方。",
7031
7077
  cssTitle: "CSS 渲染器 · 零 WebGL 上下文",
@@ -7193,7 +7239,7 @@ var ba = [
7193
7239
  },
7194
7240
  {
7195
7241
  id: "assetSizing",
7196
- tokens: te
7242
+ tokens: I
7197
7243
  }
7198
7244
  ];
7199
7245
  function ka({ id: e, label: t, tokens: n }) {
@@ -7595,6 +7641,101 @@ function Pa() {
7595
7641
  });
7596
7642
  }
7597
7643
  function Fa() {
7644
+ let { liquid: e } = Da(), [t, n] = d(null);
7645
+ return /* @__PURE__ */ h("div", {
7646
+ className: "game-ui-liquid-showcase",
7647
+ children: [
7648
+ /* @__PURE__ */ m(X, {
7649
+ title: e.surfacesTitle,
7650
+ tone: "strong",
7651
+ children: /* @__PURE__ */ m("div", {
7652
+ className: "game-ui-liquid-showcase__grid",
7653
+ children: [
7654
+ "primary",
7655
+ "secondary",
7656
+ "success",
7657
+ "danger"
7658
+ ].map((t) => /* @__PURE__ */ h("div", {
7659
+ className: "game-ui-liquid-showcase__pair",
7660
+ children: [
7661
+ /* @__PURE__ */ m(J, {
7662
+ variant: t,
7663
+ children: t
7664
+ }),
7665
+ /* @__PURE__ */ m(J, {
7666
+ surface: "liquid",
7667
+ variant: t,
7668
+ children: t
7669
+ }),
7670
+ /* @__PURE__ */ m("small", { children: e.press })
7671
+ ]
7672
+ }, t))
7673
+ })
7674
+ }),
7675
+ /* @__PURE__ */ h(X, {
7676
+ title: e.disabledTitle,
7677
+ tone: "strong",
7678
+ children: [/* @__PURE__ */ m("p", {
7679
+ className: "game-ui-small-copy",
7680
+ children: e.disabledBody
7681
+ }), /* @__PURE__ */ m("div", {
7682
+ className: "game-ui-liquid-showcase__grid",
7683
+ children: /* @__PURE__ */ h("div", {
7684
+ className: "game-ui-liquid-showcase__pair",
7685
+ children: [/* @__PURE__ */ m(J, {
7686
+ disabled: !0,
7687
+ variant: "primary",
7688
+ children: "flat"
7689
+ }), /* @__PURE__ */ m(J, {
7690
+ disabled: !0,
7691
+ surface: "liquid",
7692
+ variant: "primary",
7693
+ children: "liquid"
7694
+ })]
7695
+ })
7696
+ })]
7697
+ }),
7698
+ /* @__PURE__ */ h(X, {
7699
+ title: e.formsTitle,
7700
+ tone: "strong",
7701
+ children: [/* @__PURE__ */ m("p", {
7702
+ className: "game-ui-small-copy",
7703
+ children: e.formsBody
7704
+ }), /* @__PURE__ */ m("div", {
7705
+ className: "game-ui-liquid-showcase__grid",
7706
+ children: [
7707
+ "press",
7708
+ "settle",
7709
+ "fill",
7710
+ "drain"
7711
+ ].map((r) => /* @__PURE__ */ h("div", {
7712
+ className: "game-ui-liquid-showcase__pair",
7713
+ children: [
7714
+ /* @__PURE__ */ m(Rn, {
7715
+ active: t === r,
7716
+ fill: "var(--game-ui-accent)",
7717
+ form: r,
7718
+ radius: 20,
7719
+ children: /* @__PURE__ */ m("span", { className: "game-ui-liquid-showcase__body" })
7720
+ }),
7721
+ /* @__PURE__ */ m(J, {
7722
+ onClick: () => n((e) => e === r ? null : r),
7723
+ variant: "ghost",
7724
+ children: t === r ? e.reset : e.trigger
7725
+ }),
7726
+ /* @__PURE__ */ h("small", { children: [
7727
+ r,
7728
+ " · ",
7729
+ zn(r)
7730
+ ] })
7731
+ ]
7732
+ }, r))
7733
+ })]
7734
+ })
7735
+ ]
7736
+ });
7737
+ }
7738
+ function Ia() {
7598
7739
  let { liquidMetal: e } = Da();
7599
7740
  return /* @__PURE__ */ h("div", {
7600
7741
  className: "game-ui-liquid-metal-compare",
@@ -7621,7 +7762,7 @@ function Fa() {
7621
7762
  })]
7622
7763
  });
7623
7764
  }
7624
- function Ia() {
7765
+ function La() {
7625
7766
  let { modals: e } = Da();
7626
7767
  return /* @__PURE__ */ h("div", {
7627
7768
  className: "game-ui-preview-two-up",
@@ -7658,7 +7799,7 @@ function Ia() {
7658
7799
  })]
7659
7800
  });
7660
7801
  }
7661
- function La() {
7802
+ function Ra() {
7662
7803
  let { cards: e } = Da();
7663
7804
  return /* @__PURE__ */ h("div", {
7664
7805
  className: "game-ui-preview-two-up",
@@ -7706,7 +7847,7 @@ function La() {
7706
7847
  })]
7707
7848
  });
7708
7849
  }
7709
- var Ra = [
7850
+ var za = [
7710
7851
  {
7711
7852
  id: "terrain",
7712
7853
  label: "Terrain",
@@ -7722,7 +7863,7 @@ var Ra = [
7722
7863
  label: "Place",
7723
7864
  icon: "gem"
7724
7865
  }
7725
- ], za = [
7866
+ ], Ba = [
7726
7867
  {
7727
7868
  id: "raise",
7728
7869
  label: "Raise",
@@ -7748,7 +7889,7 @@ var Ra = [
7748
7889
  label: "Paint",
7749
7890
  shortcut: "5"
7750
7891
  }
7751
- ], Ba = [
7892
+ ], Va = [
7752
7893
  {
7753
7894
  id: "grass",
7754
7895
  label: "Grass",
@@ -7764,7 +7905,7 @@ var Ra = [
7764
7905
  label: "Path",
7765
7906
  color: "#b98d5d"
7766
7907
  }
7767
- ], Va = [{
7908
+ ], Ha = [{
7768
7909
  id: "foundation",
7769
7910
  label: "Foundation",
7770
7911
  icon: "home",
@@ -7783,7 +7924,7 @@ var Ra = [
7783
7924
  status: "ready"
7784
7925
  }]
7785
7926
  }];
7786
- function Ha() {
7927
+ function Ua() {
7787
7928
  return /* @__PURE__ */ h("div", {
7788
7929
  className: "game-ui-preview-two-up",
7789
7930
  children: [/* @__PURE__ */ m(Ki, {
@@ -7795,10 +7936,10 @@ function Ha() {
7795
7936
  radius: 2.75,
7796
7937
  strength: .45
7797
7938
  },
7798
- buildCategories: Va,
7939
+ buildCategories: Ha,
7799
7940
  label: "Desktop terrain and build tools",
7800
- materials: Ba,
7801
- modes: Ra,
7941
+ materials: Va,
7942
+ modes: za,
7802
7943
  selectedBuildItemId: "floor-2x2",
7803
7944
  status: {
7804
7945
  label: "Ready",
@@ -7809,7 +7950,7 @@ function Ha() {
7809
7950
  progressValue: 68
7810
7951
  },
7811
7952
  title: "Island tools",
7812
- tools: za,
7953
+ tools: Ba,
7813
7954
  undoRedo: {
7814
7955
  canRedo: !1,
7815
7956
  canUndo: !0
@@ -7823,11 +7964,11 @@ function Ha() {
7823
7964
  radius: 1.5,
7824
7965
  strength: .3
7825
7966
  },
7826
- buildCategories: Va,
7967
+ buildCategories: Ha,
7827
7968
  drawerOpen: !0,
7828
7969
  label: "Small mobile terrain drawer",
7829
- materials: Ba,
7830
- modes: Ra,
7970
+ materials: Va,
7971
+ modes: za,
7831
7972
  selectedBuildItemId: "floor-2x2",
7832
7973
  status: {
7833
7974
  label: "Blocked",
@@ -7835,7 +7976,7 @@ function Ha() {
7835
7976
  description: "This edit would bury a placed object."
7836
7977
  },
7837
7978
  title: "Tools",
7838
- tools: za,
7979
+ tools: Ba,
7839
7980
  undoRedo: {
7840
7981
  canRedo: !0,
7841
7982
  canUndo: !0
@@ -7844,7 +7985,7 @@ function Ha() {
7844
7985
  })]
7845
7986
  });
7846
7987
  }
7847
- function Ua({ label: e, mode: t }) {
7988
+ function Wa({ label: e, mode: t }) {
7848
7989
  return /* @__PURE__ */ h("div", {
7849
7990
  className: "game-ui-construction-preview-card",
7850
7991
  "data-preview": t,
@@ -7858,7 +7999,7 @@ function Ua({ label: e, mode: t }) {
7858
7999
  ]
7859
8000
  });
7860
8001
  }
7861
- var Wa = [
8002
+ var Ga = [
7862
8003
  {
7863
8004
  id: "preview-deck",
7864
8005
  title: "Deck robot crew",
@@ -7919,7 +8060,7 @@ var Wa = [
7919
8060
  before: {
7920
8061
  label: "Before",
7921
8062
  caption: "Uneven terrain pad.",
7922
- content: /* @__PURE__ */ m(Ua, {
8063
+ content: /* @__PURE__ */ m(Wa, {
7923
8064
  label: "Rough pad",
7924
8065
  mode: "before"
7925
8066
  })
@@ -7927,7 +8068,7 @@ var Wa = [
7927
8068
  after: {
7928
8069
  label: "After",
7929
8070
  caption: "Flattened foundation pad with safe clearance.",
7930
- content: /* @__PURE__ */ m(Ua, {
8071
+ content: /* @__PURE__ */ m(Wa, {
7931
8072
  label: "Foundation ready",
7932
8073
  mode: "after"
7933
8074
  })
@@ -7956,11 +8097,11 @@ var Wa = [
7956
8097
  }]
7957
8098
  }
7958
8099
  ];
7959
- function Ga() {
8100
+ function Ka() {
7960
8101
  return /* @__PURE__ */ h("div", {
7961
8102
  className: "game-ui-preview-two-up",
7962
8103
  children: [/* @__PURE__ */ m(fa, {
7963
- jobs: Wa,
8104
+ jobs: Ga,
7964
8105
  label: "AI contractor jobs",
7965
8106
  selectedJobId: "review-house-pad",
7966
8107
  subtitle: "Official contractor UI covers drafts, previews, robot work, validation, review, and local-only provider boundaries.",
@@ -7968,7 +8109,7 @@ function Ga() {
7968
8109
  variant: "desktop"
7969
8110
  }), /* @__PURE__ */ m(fa, {
7970
8111
  drawerOpen: !0,
7971
- jobs: Wa,
8112
+ jobs: Ga,
7972
8113
  label: "Small mobile contractor jobs",
7973
8114
  selectedJobId: "blocked-fence",
7974
8115
  title: "Contractor",
@@ -7976,7 +8117,7 @@ function Ga() {
7976
8117
  })]
7977
8118
  });
7978
8119
  }
7979
- function Ka() {
8120
+ function qa() {
7980
8121
  return /* @__PURE__ */ m(gi, {
7981
8122
  title: "OwnMySpace island editor preview",
7982
8123
  hud: /* @__PURE__ */ m(vi, {
@@ -8090,7 +8231,7 @@ function Ka() {
8090
8231
  })
8091
8232
  });
8092
8233
  }
8093
- var qa = [{
8234
+ var Ja = [{
8094
8235
  id: "starter",
8095
8236
  label: "Starter pieces",
8096
8237
  source: "starter",
@@ -8121,7 +8262,7 @@ var qa = [{
8121
8262
  }
8122
8263
  ]
8123
8264
  }];
8124
- function Ja() {
8265
+ function Ya() {
8125
8266
  return /* @__PURE__ */ m("div", {
8126
8267
  className: "game-ui-asset-compression-repro",
8127
8268
  "aria-label": "Asset card compression repro",
@@ -8147,7 +8288,7 @@ function Ja() {
8147
8288
  style: { "--repro-width": e.width },
8148
8289
  children: [/* @__PURE__ */ m(Q, { children: e.label }), /* @__PURE__ */ m(Oi, {
8149
8290
  density: "dense",
8150
- groups: qa,
8291
+ groups: Ja,
8151
8292
  label: `${e.label} assets`,
8152
8293
  selectedAssetId: "asset-repro-chair",
8153
8294
  title: "Build"
@@ -8155,7 +8296,7 @@ function Ja() {
8155
8296
  }, e.id))
8156
8297
  });
8157
8298
  }
8158
- function Ya() {
8299
+ function Xa() {
8159
8300
  let { firstSession: e } = Da();
8160
8301
  return /* @__PURE__ */ h("div", {
8161
8302
  className: "game-ui-first-session-preview",
@@ -8223,7 +8364,7 @@ function Ya() {
8223
8364
  })]
8224
8365
  });
8225
8366
  }
8226
- function Xa() {
8367
+ function Za() {
8227
8368
  let { responsive: e } = Da();
8228
8369
  return /* @__PURE__ */ h("div", {
8229
8370
  className: "game-ui-proof-frames",
@@ -8236,7 +8377,7 @@ function Xa() {
8236
8377
  })]
8237
8378
  });
8238
8379
  }
8239
- function Za() {
8380
+ function Qa() {
8240
8381
  let { forms: e } = Da();
8241
8382
  return /* @__PURE__ */ h("div", {
8242
8383
  className: "game-ui-preview-two-up",
@@ -8318,8 +8459,8 @@ function Za() {
8318
8459
  })]
8319
8460
  });
8320
8461
  }
8321
- var Qa = Ar.filter((e) => Pr(e).includes("game")), $a = Ar.filter((e) => Pr(e).includes("line"));
8322
- function eo({ names: e, style: t }) {
8462
+ var $a = Ar.filter((e) => Pr(e).includes("game")), eo = Ar.filter((e) => Pr(e).includes("line"));
8463
+ function to({ names: e, style: t }) {
8323
8464
  return /* @__PURE__ */ m("div", {
8324
8465
  className: "game-ui-icon-grid",
8325
8466
  children: e.map((e) => /* @__PURE__ */ h("figure", {
@@ -8332,7 +8473,7 @@ function eo({ names: e, style: t }) {
8332
8473
  }, `${t}-${e}`))
8333
8474
  });
8334
8475
  }
8335
- function to() {
8476
+ function no() {
8336
8477
  return /* @__PURE__ */ m("div", {
8337
8478
  className: "game-ui-icon-grid",
8338
8479
  children: Ir.map((e) => /* @__PURE__ */ h("figure", {
@@ -8350,7 +8491,7 @@ function to() {
8350
8491
  }, `sprite-${e}`))
8351
8492
  });
8352
8493
  }
8353
- function no() {
8494
+ function ro() {
8354
8495
  let { gallery: e } = Da();
8355
8496
  return /* @__PURE__ */ h("div", {
8356
8497
  className: "game-ui-icon-gallery",
@@ -8366,8 +8507,8 @@ function no() {
8366
8507
  className: "game-ui-small-copy",
8367
8508
  children: e.gameHint
8368
8509
  })]
8369
- }), /* @__PURE__ */ m(eo, {
8370
- names: Qa,
8510
+ }), /* @__PURE__ */ m(to, {
8511
+ names: $a,
8371
8512
  style: "game"
8372
8513
  })]
8373
8514
  }),
@@ -8379,8 +8520,8 @@ function no() {
8379
8520
  className: "game-ui-small-copy",
8380
8521
  children: e.lineHint
8381
8522
  })]
8382
- }), /* @__PURE__ */ m(eo, {
8383
- names: $a,
8523
+ }), /* @__PURE__ */ m(to, {
8524
+ names: eo,
8384
8525
  style: "line"
8385
8526
  })]
8386
8527
  }),
@@ -8395,12 +8536,12 @@ function no() {
8395
8536
  className: "game-ui-small-copy",
8396
8537
  children: e.spriteHint
8397
8538
  })]
8398
- }), /* @__PURE__ */ m(to, {})]
8539
+ }), /* @__PURE__ */ m(no, {})]
8399
8540
  })
8400
8541
  ]
8401
8542
  });
8402
8543
  }
8403
- function ro({ title: e, body: t }) {
8544
+ function io({ title: e, body: t }) {
8404
8545
  let [n, r] = d("en"), i = Ta[n], a = e && n === "en" ? e : i.heroTitle, s = t && n === "en" ? t : i.heroBody;
8405
8546
  return o(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
8406
8547
  delete document.documentElement.dataset.gameUiPreview;
@@ -8467,7 +8608,7 @@ function ro({ title: e, body: t }) {
8467
8608
  className: "game-ui-small-copy",
8468
8609
  children: i.iconsIntro
8469
8610
  }),
8470
- /* @__PURE__ */ m(no, {})
8611
+ /* @__PURE__ */ m(ro, {})
8471
8612
  ]
8472
8613
  }),
8473
8614
  /* @__PURE__ */ h("section", {
@@ -8488,8 +8629,8 @@ function ro({ title: e, body: t }) {
8488
8629
  }),
8489
8630
  /* @__PURE__ */ m(Ma, {}),
8490
8631
  /* @__PURE__ */ m(Na, {}),
8491
- /* @__PURE__ */ m(Ia, {}),
8492
8632
  /* @__PURE__ */ m(La, {}),
8633
+ /* @__PURE__ */ m(Ra, {}),
8493
8634
  /* @__PURE__ */ m(gr, {
8494
8635
  entries: i.history,
8495
8636
  label: i.historyLabel
@@ -8502,7 +8643,7 @@ function ro({ title: e, body: t }) {
8502
8643
  children: [/* @__PURE__ */ m("h2", {
8503
8644
  id: "game-ui-preview-forms-title",
8504
8645
  children: i.sections.forms
8505
- }), /* @__PURE__ */ m(Za, {})]
8646
+ }), /* @__PURE__ */ m(Qa, {})]
8506
8647
  }),
8507
8648
  /* @__PURE__ */ h("section", {
8508
8649
  "aria-labelledby": "game-ui-preview-overlay-glass-title",
@@ -8519,6 +8660,21 @@ function ro({ title: e, body: t }) {
8519
8660
  /* @__PURE__ */ m(Pa, {})
8520
8661
  ]
8521
8662
  }),
8663
+ /* @__PURE__ */ h("section", {
8664
+ "aria-labelledby": "game-ui-preview-liquid-title",
8665
+ className: "game-ui-preview-section",
8666
+ children: [
8667
+ /* @__PURE__ */ m("h2", {
8668
+ id: "game-ui-preview-liquid-title",
8669
+ children: i.sections.liquid
8670
+ }),
8671
+ /* @__PURE__ */ m("p", {
8672
+ className: "game-ui-small-copy",
8673
+ children: i.liquid.body
8674
+ }),
8675
+ /* @__PURE__ */ m(Fa, {})
8676
+ ]
8677
+ }),
8522
8678
  /* @__PURE__ */ h("section", {
8523
8679
  "aria-labelledby": "game-ui-preview-liquid-metal-title",
8524
8680
  className: "game-ui-preview-section",
@@ -8531,7 +8687,7 @@ function ro({ title: e, body: t }) {
8531
8687
  className: "game-ui-small-copy",
8532
8688
  children: i.liquidMetal.body
8533
8689
  }),
8534
- /* @__PURE__ */ m(Fa, {})
8690
+ /* @__PURE__ */ m(Ia, {})
8535
8691
  ]
8536
8692
  }),
8537
8693
  /* @__PURE__ */ h("section", {
@@ -8540,7 +8696,7 @@ function ro({ title: e, body: t }) {
8540
8696
  children: [/* @__PURE__ */ m("h2", {
8541
8697
  id: "game-ui-preview-ownmyspace-title",
8542
8698
  children: "OwnMySpace game surface pack"
8543
- }), /* @__PURE__ */ m(Ka, {})]
8699
+ }), /* @__PURE__ */ m(qa, {})]
8544
8700
  }),
8545
8701
  /* @__PURE__ */ h("section", {
8546
8702
  "aria-labelledby": "game-ui-preview-terrain-build-title",
@@ -8554,7 +8710,7 @@ function ro({ title: e, body: t }) {
8554
8710
  className: "game-ui-small-copy",
8555
8711
  children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces."
8556
8712
  }),
8557
- /* @__PURE__ */ m(Ha, {})
8713
+ /* @__PURE__ */ m(Ua, {})
8558
8714
  ]
8559
8715
  }),
8560
8716
  /* @__PURE__ */ h("section", {
@@ -8569,7 +8725,7 @@ function ro({ title: e, body: t }) {
8569
8725
  className: "game-ui-small-copy",
8570
8726
  children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges."
8571
8727
  }),
8572
- /* @__PURE__ */ m(Ga, {})
8728
+ /* @__PURE__ */ m(Ka, {})
8573
8729
  ]
8574
8730
  }),
8575
8731
  /* @__PURE__ */ h("section", {
@@ -8584,7 +8740,7 @@ function ro({ title: e, body: t }) {
8584
8740
  className: "game-ui-small-copy",
8585
8741
  children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots."
8586
8742
  }),
8587
- /* @__PURE__ */ m(Ja, {})
8743
+ /* @__PURE__ */ m(Ya, {})
8588
8744
  ]
8589
8745
  }),
8590
8746
  /* @__PURE__ */ h("section", {
@@ -8593,7 +8749,7 @@ function ro({ title: e, body: t }) {
8593
8749
  children: [/* @__PURE__ */ m("h2", {
8594
8750
  id: "game-ui-preview-first-session-title",
8595
8751
  children: i.sections.firstSession
8596
- }), /* @__PURE__ */ m(Ya, {})]
8752
+ }), /* @__PURE__ */ m(Xa, {})]
8597
8753
  }),
8598
8754
  /* @__PURE__ */ h("section", {
8599
8755
  "aria-labelledby": "game-ui-preview-orientation-title",
@@ -8616,11 +8772,11 @@ function ro({ title: e, body: t }) {
8616
8772
  children: [/* @__PURE__ */ m("h2", {
8617
8773
  id: "game-ui-preview-responsive-title",
8618
8774
  children: i.sections.responsive
8619
- }), /* @__PURE__ */ m(Xa, {})]
8775
+ }), /* @__PURE__ */ m(Za, {})]
8620
8776
  })
8621
8777
  ]
8622
8778
  })
8623
8779
  });
8624
8780
  }
8625
8781
  //#endregion
8626
- export { Lr as CLAY_ASSETS, Or as CLAY_ASSET_BASE_PATH, te as CLAY_ASSET_SIZE_TOKENS, w as CLAY_COLOR_TOKENS, M as CLAY_ELEVATION_TOKENS, Fr as CLAY_GAME_SPRITES, Ir as CLAY_GAME_SPRITE_NAMES, Ar as CLAY_ICON_NAMES, kr as CLAY_ICON_VARIANTS, P as CLAY_LAYER_TOKENS, E as CLAY_LIQUID_GOOEY_TOKENS, E as GAME_UI_LIQUID_GOOEY_TOKENS, T as CLAY_LIQUID_METAL_TOKENS, T as GAME_UI_LIQUID_METAL_TOKENS, N as CLAY_MOTION_TOKENS, D as CLAY_OVERLAY_GLASS_TOKENS, D as GAME_UI_OVERLAY_GLASS_TOKENS, ee as CLAY_RADIUS_TOKENS, j as CLAY_SCROLLBAR_TOKENS, O as CLAY_SEMANTIC_TOKENS, A as CLAY_SPACE_TOKENS, F as CLAY_TARGET_TOKENS, k as CLAY_TYPE_TOKENS, ne as CLAY_UI_TOKENS, re as DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET, ie as DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET, Bn as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, K as DISSOLVE_DEFAULTS, oi as FirstSessionHud, si as FirstSessionOnboarding, Sa as GAME_UI_OVERLAY, ba as GAME_UI_PREVIEW_MESSAGES, Ca as GAME_UI_TARGETS, wa as GAME_UI_THEME_CONTRACT, xa as GAME_UI_TOKENS, bi as GameActionGrid, Di as GameAssetCard, $ as GameAssetIcon, Oi as GameAssetLibrary, pi as GameAvatar, Q as GameBadge, la as GameBeforeAfterToggle, zi as GameBrushControls, Hi as GameBuildLibrary, J as GameButton, mr as GameCallout, Qr as GameCardFan, di as GameCheckbox, ha as GameCollapsiblePanel, Ui as GameCompactGameDrawer, da as GameCompactJobDrawer, sa as GameConstructionApprovalBar, ua as GameConstructionJobCard, oa as GameConstructionProgress, fa as GameContractorPanel, hr as GameDialog, hi as GameEmptyState, vi as GameFactList, ui as GameField, gr as GameHistoryPanel, Zr as GameHud, _r as GameHudActions, vr as GameIconButton, ci as GameInput, ni as GameLanguageMenu, ri as GameLoadingState, Bi as GameMaterialSwatches, ya as GameModal, Ci as GameMovementPad, Ai as GameObjectToolbar, ti as GameOrientationGate, X as GamePanel, ki as GamePlacementToolbar, mi as GameProgress, Dr as GamePrompt, Tr as GameRadialMenu, ca as GameRobotCrewStatus, _i as GameSceneHudLayout, Sr as GameSegmentedControl, gi as GameShell, Cr as GameSlider, $r as GameStageTile, yi as GameStatList, br as GameTabs, Ki as GameTerrainBuildToolbox, Li as GameTerrainModeControl, Ri as GameTerrainToolStrip, li as GameTextArea, Er as GameToast, wr as GameToggle, yr as GameTooltip, ro as GameUiPreview, Vi as GameUndoRedoActions, va as GameWindowPanel, Vt as IMAGE_MELT_DEFAULTS, Mn as LIQUID_FORMS, Nn as LIQUID_FORM_NAMES, ye as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, jn as LiquidGroup, An as LiquidItem, pr as LiquidMetalButton, Rn as LiquidSurface, Jr as acknowledgeClayPlaceholders, Gr as getClayAssetBasePath, Ur as getClayAssetMode, ii as getClayCatalogPaths, Yr as getClayIconPath, Pr as getClayIconStyles, Xr as getClaySourceAssetPath, se as getLiquidGooeyBudget, Un as getLiquidMetalContextBudget, Pn as liquidFormGroup, Fn as liquidFormItem, zn as liquidFormSummary, C as playGameInteractionSound, S as playGameInteractionSoundForContext, Kt as resolveDissolveOptions, Wr as setClayAssetBasePath, Hr as setClayAssetMode, R as setLiquidGooeyBudget, Wn as setLiquidMetalContextBudget };
8782
+ export { Lr as CLAY_ASSETS, Or as CLAY_ASSET_BASE_PATH, I as CLAY_ASSET_SIZE_TOKENS, w as CLAY_COLOR_TOKENS, M as CLAY_ELEVATION_TOKENS, Fr as CLAY_GAME_SPRITES, Ir as CLAY_GAME_SPRITE_NAMES, Ar as CLAY_ICON_NAMES, kr as CLAY_ICON_VARIANTS, P as CLAY_LAYER_TOKENS, E as CLAY_LIQUID_GOOEY_TOKENS, E as GAME_UI_LIQUID_GOOEY_TOKENS, T as CLAY_LIQUID_METAL_TOKENS, T as GAME_UI_LIQUID_METAL_TOKENS, N as CLAY_MOTION_TOKENS, D as CLAY_OVERLAY_GLASS_TOKENS, D as GAME_UI_OVERLAY_GLASS_TOKENS, ee as CLAY_RADIUS_TOKENS, j as CLAY_SCROLLBAR_TOKENS, O as CLAY_SEMANTIC_TOKENS, A as CLAY_SPACE_TOKENS, F as CLAY_TARGET_TOKENS, k as CLAY_TYPE_TOKENS, te as CLAY_UI_TOKENS, ne as DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET, re as DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET, Bn as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, K as DISSOLVE_DEFAULTS, oi as FirstSessionHud, si as FirstSessionOnboarding, Sa as GAME_UI_OVERLAY, ba as GAME_UI_PREVIEW_MESSAGES, Ca as GAME_UI_TARGETS, wa as GAME_UI_THEME_CONTRACT, xa as GAME_UI_TOKENS, bi as GameActionGrid, Di as GameAssetCard, $ as GameAssetIcon, Oi as GameAssetLibrary, pi as GameAvatar, Q as GameBadge, la as GameBeforeAfterToggle, zi as GameBrushControls, Hi as GameBuildLibrary, J as GameButton, mr as GameCallout, Qr as GameCardFan, di as GameCheckbox, ha as GameCollapsiblePanel, Ui as GameCompactGameDrawer, da as GameCompactJobDrawer, sa as GameConstructionApprovalBar, ua as GameConstructionJobCard, oa as GameConstructionProgress, fa as GameContractorPanel, hr as GameDialog, hi as GameEmptyState, vi as GameFactList, ui as GameField, gr as GameHistoryPanel, Zr as GameHud, _r as GameHudActions, vr as GameIconButton, ci as GameInput, ni as GameLanguageMenu, ri as GameLoadingState, Bi as GameMaterialSwatches, ya as GameModal, Ci as GameMovementPad, Ai as GameObjectToolbar, ti as GameOrientationGate, X as GamePanel, ki as GamePlacementToolbar, mi as GameProgress, Dr as GamePrompt, Tr as GameRadialMenu, ca as GameRobotCrewStatus, _i as GameSceneHudLayout, Sr as GameSegmentedControl, gi as GameShell, Cr as GameSlider, $r as GameStageTile, yi as GameStatList, br as GameTabs, Ki as GameTerrainBuildToolbox, Li as GameTerrainModeControl, Ri as GameTerrainToolStrip, li as GameTextArea, Er as GameToast, wr as GameToggle, yr as GameTooltip, io as GameUiPreview, Vi as GameUndoRedoActions, va as GameWindowPanel, Vt as IMAGE_MELT_DEFAULTS, Mn as LIQUID_FORMS, Nn as LIQUID_FORM_NAMES, ye as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, jn as LiquidGroup, An as LiquidItem, pr as LiquidMetalButton, Rn as LiquidSurface, Jr as acknowledgeClayPlaceholders, Gr as getClayAssetBasePath, Ur as getClayAssetMode, ii as getClayCatalogPaths, Yr as getClayIconPath, Pr as getClayIconStyles, Xr as getClaySourceAssetPath, ae as getLiquidGooeyBudget, Un as getLiquidMetalContextBudget, Pn as liquidFormGroup, Fn as liquidFormItem, zn as liquidFormSummary, C as playGameInteractionSound, S as playGameInteractionSoundForContext, Kt as resolveDissolveOptions, Wr as setClayAssetBasePath, Hr as setClayAssetMode, B as setLiquidGooeyBudget, Wn as setLiquidMetalContextBudget };