@almadar/ui 5.97.0 → 5.99.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/lib/index.js CHANGED
@@ -501,11 +501,14 @@ function recordTransition(trace) {
501
501
  }
502
502
  if (entry.event === "INIT") {
503
503
  const hasFetch = entry.effects.some((e) => e.type === "fetch");
504
+ const hasEntitySeed = entry.effects.some(
505
+ (e) => e.type === "set" && typeof e.args[0] === "string" && e.args[0].startsWith("@entity.")
506
+ );
504
507
  const checkId = `init-fetch-${entry.traitName}`;
505
- if (hasFetch) {
508
+ if (hasFetch || hasEntitySeed) {
506
509
  registerCheck(
507
510
  checkId,
508
- `INIT transition for "${entry.traitName}" has fetch effect`,
511
+ `INIT transition for "${entry.traitName}" has fetch or entity-seed effect`,
509
512
  "pass"
510
513
  );
511
514
  } else {
@@ -7223,11 +7223,14 @@ function recordTransition(trace) {
7223
7223
  }
7224
7224
  if (entry.event === "INIT") {
7225
7225
  const hasFetch = entry.effects.some((e) => e.type === "fetch");
7226
+ const hasEntitySeed = entry.effects.some(
7227
+ (e) => e.type === "set" && typeof e.args[0] === "string" && e.args[0].startsWith("@entity.")
7228
+ );
7226
7229
  const checkId = `init-fetch-${entry.traitName}`;
7227
- if (hasFetch) {
7230
+ if (hasFetch || hasEntitySeed) {
7228
7231
  registerCheck(
7229
7232
  checkId,
7230
- `INIT transition for "${entry.traitName}" has fetch effect`,
7233
+ `INIT transition for "${entry.traitName}" has fetch or entity-seed effect`,
7231
7234
  "pass"
7232
7235
  );
7233
7236
  } else {
@@ -7870,7 +7873,7 @@ var init_ScoreDisplay = __esm({
7870
7873
  }
7871
7874
  });
7872
7875
  function ControlButton({
7873
- assetUrl = DEFAULT_ASSET_URL,
7876
+ assetUrl,
7874
7877
  label,
7875
7878
  icon,
7876
7879
  size = "md",
@@ -7948,7 +7951,7 @@ function ControlButton({
7948
7951
  }
7949
7952
  );
7950
7953
  }
7951
- var sizeMap4, shapeMap, variantMap, DEFAULT_ASSET_URL;
7954
+ var sizeMap4, shapeMap, variantMap;
7952
7955
  var init_ControlButton = __esm({
7953
7956
  "components/game/2d/atoms/ControlButton.tsx"() {
7954
7957
  "use client";
@@ -7975,11 +7978,6 @@ var init_ControlButton = __esm({
7975
7978
  secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
7976
7979
  ghost: "bg-transparent text-foreground border-border hover:bg-muted"
7977
7980
  };
7978
- DEFAULT_ASSET_URL = {
7979
- url: "https://almadar-kflow-assets.web.app/shared/effects/particles/circle_01.png",
7980
- role: "ui",
7981
- category: "control"
7982
- };
7983
7981
  ControlButton.displayName = "ControlButton";
7984
7982
  }
7985
7983
  });
@@ -8068,7 +8066,7 @@ function isKnownState(s) {
8068
8066
  return s in DEFAULT_STATE_STYLES;
8069
8067
  }
8070
8068
  function StateIndicator({
8071
- assetUrl = DEFAULT_ASSET_URL2,
8069
+ assetUrl = DEFAULT_ASSET_URL,
8072
8070
  state = "idle",
8073
8071
  label,
8074
8072
  size = "md",
@@ -8098,14 +8096,14 @@ function StateIndicator({
8098
8096
  }
8099
8097
  );
8100
8098
  }
8101
- var DEFAULT_ASSET_URL2, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
8099
+ var DEFAULT_ASSET_URL, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
8102
8100
  var init_StateIndicator = __esm({
8103
8101
  "components/game/2d/atoms/StateIndicator.tsx"() {
8104
8102
  init_Box();
8105
8103
  init_Icon();
8106
8104
  init_cn();
8107
8105
  init_GameIcon();
8108
- DEFAULT_ASSET_URL2 = {
8106
+ DEFAULT_ASSET_URL = {
8109
8107
  url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
8110
8108
  role: "ui",
8111
8109
  category: "state"
@@ -8191,7 +8189,7 @@ var init_TimerDisplay = __esm({
8191
8189
  }
8192
8190
  });
8193
8191
  function ResourceCounter({
8194
- assetUrl = DEFAULT_ASSET_URL3,
8192
+ assetUrl = DEFAULT_ASSET_URL2,
8195
8193
  icon,
8196
8194
  label = "Gold",
8197
8195
  value = 250,
@@ -8224,7 +8222,7 @@ function ResourceCounter({
8224
8222
  }
8225
8223
  );
8226
8224
  }
8227
- var colorTokenClasses2, DEFAULT_ASSET_URL3, sizeMap6;
8225
+ var colorTokenClasses2, DEFAULT_ASSET_URL2, sizeMap6;
8228
8226
  var init_ResourceCounter = __esm({
8229
8227
  "components/game/2d/atoms/ResourceCounter.tsx"() {
8230
8228
  init_cn();
@@ -8240,7 +8238,7 @@ var init_ResourceCounter = __esm({
8240
8238
  error: "text-error",
8241
8239
  muted: "text-muted-foreground"
8242
8240
  };
8243
- DEFAULT_ASSET_URL3 = {
8241
+ DEFAULT_ASSET_URL2 = {
8244
8242
  url: "https://almadar-kflow-assets.web.app/shared/world-map/gold_mine.png",
8245
8243
  role: "ui",
8246
8244
  category: "coin"
@@ -8254,7 +8252,7 @@ var init_ResourceCounter = __esm({
8254
8252
  }
8255
8253
  });
8256
8254
  function ItemSlot({
8257
- assetUrl = DEFAULT_ASSET_URL4,
8255
+ assetUrl = DEFAULT_ASSET_URL3,
8258
8256
  icon = "sword",
8259
8257
  label = "Iron Sword",
8260
8258
  quantity,
@@ -8309,7 +8307,7 @@ function ItemSlot({
8309
8307
  }
8310
8308
  );
8311
8309
  }
8312
- var sizeMap7, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL4, assetSizeMap;
8310
+ var sizeMap7, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL3, assetSizeMap;
8313
8311
  var init_ItemSlot = __esm({
8314
8312
  "components/game/2d/atoms/ItemSlot.tsx"() {
8315
8313
  "use client";
@@ -8339,7 +8337,7 @@ var init_ItemSlot = __esm({
8339
8337
  epic: "shadow-lg",
8340
8338
  legendary: "shadow-lg"
8341
8339
  };
8342
- DEFAULT_ASSET_URL4 = {
8340
+ DEFAULT_ASSET_URL3 = {
8343
8341
  url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
8344
8342
  role: "item",
8345
8343
  category: "item"
@@ -8353,7 +8351,7 @@ var init_ItemSlot = __esm({
8353
8351
  }
8354
8352
  });
8355
8353
  function TurnIndicator({
8356
- assetUrl = DEFAULT_ASSET_URL5,
8354
+ assetUrl = DEFAULT_ASSET_URL4,
8357
8355
  currentTurn = 1,
8358
8356
  maxTurns,
8359
8357
  activeTeam,
@@ -8393,7 +8391,7 @@ function TurnIndicator({
8393
8391
  }
8394
8392
  );
8395
8393
  }
8396
- var sizeMap8, DEFAULT_ASSET_URL5;
8394
+ var sizeMap8, DEFAULT_ASSET_URL4;
8397
8395
  var init_TurnIndicator = __esm({
8398
8396
  "components/game/2d/atoms/TurnIndicator.tsx"() {
8399
8397
  init_cn();
@@ -8405,7 +8403,7 @@ var init_TurnIndicator = __esm({
8405
8403
  md: { wrapper: "text-sm gap-2 px-3 py-1", dot: "w-2 h-2" },
8406
8404
  lg: { wrapper: "text-base gap-2.5 px-4 py-1.5", dot: "w-2.5 h-2.5" }
8407
8405
  };
8408
- DEFAULT_ASSET_URL5 = {
8406
+ DEFAULT_ASSET_URL4 = {
8409
8407
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/symbol_01.png",
8410
8408
  role: "ui",
8411
8409
  category: "turn"
@@ -8425,7 +8423,7 @@ function getComboScale(combo) {
8425
8423
  return "";
8426
8424
  }
8427
8425
  function ComboCounter({
8428
- assetUrl = DEFAULT_ASSET_URL6,
8426
+ assetUrl = DEFAULT_ASSET_URL5,
8429
8427
  combo = 5,
8430
8428
  multiplier,
8431
8429
  streak,
@@ -8460,14 +8458,14 @@ function ComboCounter({
8460
8458
  }
8461
8459
  );
8462
8460
  }
8463
- var DEFAULT_ASSET_URL6, sizeMap9;
8461
+ var DEFAULT_ASSET_URL5, sizeMap9;
8464
8462
  var init_ComboCounter = __esm({
8465
8463
  "components/game/2d/atoms/ComboCounter.tsx"() {
8466
8464
  init_cn();
8467
8465
  init_Box();
8468
8466
  init_Typography();
8469
8467
  init_GameIcon();
8470
- DEFAULT_ASSET_URL6 = {
8468
+ DEFAULT_ASSET_URL5 = {
8471
8469
  url: "https://almadar-kflow-assets.web.app/shared/effects/flash/flash00.png",
8472
8470
  role: "effect",
8473
8471
  category: "effect"
@@ -8481,7 +8479,7 @@ var init_ComboCounter = __esm({
8481
8479
  }
8482
8480
  });
8483
8481
  function WaypointMarker({
8484
- assetUrl = DEFAULT_ASSET_URL7,
8482
+ assetUrl = DEFAULT_ASSET_URL6,
8485
8483
  label,
8486
8484
  icon,
8487
8485
  active = true,
@@ -8541,7 +8539,7 @@ function WaypointMarker({
8541
8539
  )
8542
8540
  ] });
8543
8541
  }
8544
- var DEFAULT_ASSET_URL7, sizeMap10, checkIcon;
8542
+ var DEFAULT_ASSET_URL6, sizeMap10, checkIcon;
8545
8543
  var init_WaypointMarker = __esm({
8546
8544
  "components/game/2d/atoms/WaypointMarker.tsx"() {
8547
8545
  init_cn();
@@ -8549,7 +8547,7 @@ var init_WaypointMarker = __esm({
8549
8547
  init_Box();
8550
8548
  init_Typography();
8551
8549
  init_GameIcon();
8552
- DEFAULT_ASSET_URL7 = {
8550
+ DEFAULT_ASSET_URL6 = {
8553
8551
  url: "https://almadar-kflow-assets.web.app/shared/world-map/battle_marker.png",
8554
8552
  role: "ui",
8555
8553
  category: "waypoint"
@@ -8570,7 +8568,7 @@ function formatDuration(seconds) {
8570
8568
  return `${Math.round(seconds)}s`;
8571
8569
  }
8572
8570
  function StatusEffect({
8573
- assetUrl = DEFAULT_ASSET_URL8,
8571
+ assetUrl = DEFAULT_ASSET_URL7,
8574
8572
  icon,
8575
8573
  label = "Shield",
8576
8574
  duration = 30,
@@ -8621,7 +8619,7 @@ function StatusEffect({
8621
8619
  label && /* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", className: "text-xs text-muted-foreground mt-0.5 text-center whitespace-nowrap", children: label })
8622
8620
  ] });
8623
8621
  }
8624
- var DEFAULT_ASSET_URL8, sizeMap11, variantStyles7;
8622
+ var DEFAULT_ASSET_URL7, sizeMap11, variantStyles7;
8625
8623
  var init_StatusEffect = __esm({
8626
8624
  "components/game/2d/atoms/StatusEffect.tsx"() {
8627
8625
  init_cn();
@@ -8629,7 +8627,7 @@ var init_StatusEffect = __esm({
8629
8627
  init_Box();
8630
8628
  init_Typography();
8631
8629
  init_GameIcon();
8632
- DEFAULT_ASSET_URL8 = {
8630
+ DEFAULT_ASSET_URL7 = {
8633
8631
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/flame_01.png",
8634
8632
  role: "ui",
8635
8633
  category: "effect"
@@ -8648,7 +8646,7 @@ var init_StatusEffect = __esm({
8648
8646
  }
8649
8647
  });
8650
8648
  function DamageNumber({
8651
- assetUrl = DEFAULT_ASSET_URL9,
8649
+ assetUrl = DEFAULT_ASSET_URL8,
8652
8650
  value = 42,
8653
8651
  type = "damage",
8654
8652
  size = "md",
@@ -8676,7 +8674,7 @@ function DamageNumber({
8676
8674
  )
8677
8675
  ] });
8678
8676
  }
8679
- var sizeMap12, typeStyles, floatKeyframes, DEFAULT_ASSET_URL9;
8677
+ var sizeMap12, typeStyles, floatKeyframes, DEFAULT_ASSET_URL8;
8680
8678
  var init_DamageNumber = __esm({
8681
8679
  "components/game/2d/atoms/DamageNumber.tsx"() {
8682
8680
  init_cn();
@@ -8700,7 +8698,7 @@ var init_DamageNumber = __esm({
8700
8698
  100% { opacity: 0; transform: translateY(-32px) scale(0.8); }
8701
8699
  }
8702
8700
  `;
8703
- DEFAULT_ASSET_URL9 = {
8701
+ DEFAULT_ASSET_URL8 = {
8704
8702
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/spark_01.png",
8705
8703
  role: "effect",
8706
8704
  category: "effect"
@@ -8826,7 +8824,7 @@ var init_ChoiceButton = __esm({
8826
8824
  }
8827
8825
  });
8828
8826
  function ActionButton({
8829
- assetUrl = DEFAULT_ASSET_URL10,
8827
+ assetUrl = DEFAULT_ASSET_URL9,
8830
8828
  label = "Attack",
8831
8829
  icon,
8832
8830
  cooldown = 0,
@@ -8895,7 +8893,7 @@ function ActionButton({
8895
8893
  }
8896
8894
  );
8897
8895
  }
8898
- var sizeMap13, variantStyles8, DEFAULT_ASSET_URL10;
8896
+ var sizeMap13, variantStyles8, DEFAULT_ASSET_URL9;
8899
8897
  var init_ActionButton = __esm({
8900
8898
  "components/game/2d/atoms/ActionButton.tsx"() {
8901
8899
  init_cn();
@@ -8915,7 +8913,7 @@ var init_ActionButton = __esm({
8915
8913
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
8916
8914
  danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
8917
8915
  };
8918
- DEFAULT_ASSET_URL10 = {
8916
+ DEFAULT_ASSET_URL9 = {
8919
8917
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/slash_01.png",
8920
8918
  role: "ui",
8921
8919
  category: "action"
@@ -9135,15 +9133,17 @@ function ControlGrid({
9135
9133
  },
9136
9134
  d
9137
9135
  );
9136
+ const usesSemantic = !!directionEvents;
9137
+ const cell = (d) => !usesSemantic || directionEvents?.[d] ? dir(d) : /* @__PURE__ */ jsxRuntime.jsx(Box, {}, d);
9138
9138
  return /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: cn("inline-grid grid-cols-3", ds.gap, ds.container, className), children: [
9139
9139
  /* @__PURE__ */ jsxRuntime.jsx(Box, {}),
9140
- dir("up"),
9140
+ cell("up"),
9141
9141
  /* @__PURE__ */ jsxRuntime.jsx(Box, {}),
9142
- dir("left"),
9142
+ cell("left"),
9143
9143
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
9144
- dir("right"),
9144
+ cell("right"),
9145
9145
  /* @__PURE__ */ jsxRuntime.jsx(Box, {}),
9146
- dir("down"),
9146
+ cell("down"),
9147
9147
  /* @__PURE__ */ jsxRuntime.jsx(Box, {})
9148
9148
  ] });
9149
9149
  }
@@ -7178,11 +7178,14 @@ function recordTransition(trace) {
7178
7178
  }
7179
7179
  if (entry.event === "INIT") {
7180
7180
  const hasFetch = entry.effects.some((e) => e.type === "fetch");
7181
+ const hasEntitySeed = entry.effects.some(
7182
+ (e) => e.type === "set" && typeof e.args[0] === "string" && e.args[0].startsWith("@entity.")
7183
+ );
7181
7184
  const checkId = `init-fetch-${entry.traitName}`;
7182
- if (hasFetch) {
7185
+ if (hasFetch || hasEntitySeed) {
7183
7186
  registerCheck(
7184
7187
  checkId,
7185
- `INIT transition for "${entry.traitName}" has fetch effect`,
7188
+ `INIT transition for "${entry.traitName}" has fetch or entity-seed effect`,
7186
7189
  "pass"
7187
7190
  );
7188
7191
  } else {
@@ -7825,7 +7828,7 @@ var init_ScoreDisplay = __esm({
7825
7828
  }
7826
7829
  });
7827
7830
  function ControlButton({
7828
- assetUrl = DEFAULT_ASSET_URL,
7831
+ assetUrl,
7829
7832
  label,
7830
7833
  icon,
7831
7834
  size = "md",
@@ -7903,7 +7906,7 @@ function ControlButton({
7903
7906
  }
7904
7907
  );
7905
7908
  }
7906
- var sizeMap4, shapeMap, variantMap, DEFAULT_ASSET_URL;
7909
+ var sizeMap4, shapeMap, variantMap;
7907
7910
  var init_ControlButton = __esm({
7908
7911
  "components/game/2d/atoms/ControlButton.tsx"() {
7909
7912
  "use client";
@@ -7930,11 +7933,6 @@ var init_ControlButton = __esm({
7930
7933
  secondary: "bg-secondary text-secondary-foreground border-border hover:bg-secondary-hover",
7931
7934
  ghost: "bg-transparent text-foreground border-border hover:bg-muted"
7932
7935
  };
7933
- DEFAULT_ASSET_URL = {
7934
- url: "https://almadar-kflow-assets.web.app/shared/effects/particles/circle_01.png",
7935
- role: "ui",
7936
- category: "control"
7937
- };
7938
7936
  ControlButton.displayName = "ControlButton";
7939
7937
  }
7940
7938
  });
@@ -8023,7 +8021,7 @@ function isKnownState(s) {
8023
8021
  return s in DEFAULT_STATE_STYLES;
8024
8022
  }
8025
8023
  function StateIndicator({
8026
- assetUrl = DEFAULT_ASSET_URL2,
8024
+ assetUrl = DEFAULT_ASSET_URL,
8027
8025
  state = "idle",
8028
8026
  label,
8029
8027
  size = "md",
@@ -8053,14 +8051,14 @@ function StateIndicator({
8053
8051
  }
8054
8052
  );
8055
8053
  }
8056
- var DEFAULT_ASSET_URL2, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
8054
+ var DEFAULT_ASSET_URL, DEFAULT_STATE_STYLES, DEFAULT_STYLE, STATIC_STATES, SIZE_CLASSES;
8057
8055
  var init_StateIndicator = __esm({
8058
8056
  "components/game/2d/atoms/StateIndicator.tsx"() {
8059
8057
  init_Box();
8060
8058
  init_Icon();
8061
8059
  init_cn();
8062
8060
  init_GameIcon();
8063
- DEFAULT_ASSET_URL2 = {
8061
+ DEFAULT_ASSET_URL = {
8064
8062
  url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
8065
8063
  role: "ui",
8066
8064
  category: "state"
@@ -8146,7 +8144,7 @@ var init_TimerDisplay = __esm({
8146
8144
  }
8147
8145
  });
8148
8146
  function ResourceCounter({
8149
- assetUrl = DEFAULT_ASSET_URL3,
8147
+ assetUrl = DEFAULT_ASSET_URL2,
8150
8148
  icon,
8151
8149
  label = "Gold",
8152
8150
  value = 250,
@@ -8179,7 +8177,7 @@ function ResourceCounter({
8179
8177
  }
8180
8178
  );
8181
8179
  }
8182
- var colorTokenClasses2, DEFAULT_ASSET_URL3, sizeMap6;
8180
+ var colorTokenClasses2, DEFAULT_ASSET_URL2, sizeMap6;
8183
8181
  var init_ResourceCounter = __esm({
8184
8182
  "components/game/2d/atoms/ResourceCounter.tsx"() {
8185
8183
  init_cn();
@@ -8195,7 +8193,7 @@ var init_ResourceCounter = __esm({
8195
8193
  error: "text-error",
8196
8194
  muted: "text-muted-foreground"
8197
8195
  };
8198
- DEFAULT_ASSET_URL3 = {
8196
+ DEFAULT_ASSET_URL2 = {
8199
8197
  url: "https://almadar-kflow-assets.web.app/shared/world-map/gold_mine.png",
8200
8198
  role: "ui",
8201
8199
  category: "coin"
@@ -8209,7 +8207,7 @@ var init_ResourceCounter = __esm({
8209
8207
  }
8210
8208
  });
8211
8209
  function ItemSlot({
8212
- assetUrl = DEFAULT_ASSET_URL4,
8210
+ assetUrl = DEFAULT_ASSET_URL3,
8213
8211
  icon = "sword",
8214
8212
  label = "Iron Sword",
8215
8213
  quantity,
@@ -8264,7 +8262,7 @@ function ItemSlot({
8264
8262
  }
8265
8263
  );
8266
8264
  }
8267
- var sizeMap7, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL4, assetSizeMap;
8265
+ var sizeMap7, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL3, assetSizeMap;
8268
8266
  var init_ItemSlot = __esm({
8269
8267
  "components/game/2d/atoms/ItemSlot.tsx"() {
8270
8268
  "use client";
@@ -8294,7 +8292,7 @@ var init_ItemSlot = __esm({
8294
8292
  epic: "shadow-lg",
8295
8293
  legendary: "shadow-lg"
8296
8294
  };
8297
- DEFAULT_ASSET_URL4 = {
8295
+ DEFAULT_ASSET_URL3 = {
8298
8296
  url: "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png",
8299
8297
  role: "item",
8300
8298
  category: "item"
@@ -8308,7 +8306,7 @@ var init_ItemSlot = __esm({
8308
8306
  }
8309
8307
  });
8310
8308
  function TurnIndicator({
8311
- assetUrl = DEFAULT_ASSET_URL5,
8309
+ assetUrl = DEFAULT_ASSET_URL4,
8312
8310
  currentTurn = 1,
8313
8311
  maxTurns,
8314
8312
  activeTeam,
@@ -8348,7 +8346,7 @@ function TurnIndicator({
8348
8346
  }
8349
8347
  );
8350
8348
  }
8351
- var sizeMap8, DEFAULT_ASSET_URL5;
8349
+ var sizeMap8, DEFAULT_ASSET_URL4;
8352
8350
  var init_TurnIndicator = __esm({
8353
8351
  "components/game/2d/atoms/TurnIndicator.tsx"() {
8354
8352
  init_cn();
@@ -8360,7 +8358,7 @@ var init_TurnIndicator = __esm({
8360
8358
  md: { wrapper: "text-sm gap-2 px-3 py-1", dot: "w-2 h-2" },
8361
8359
  lg: { wrapper: "text-base gap-2.5 px-4 py-1.5", dot: "w-2.5 h-2.5" }
8362
8360
  };
8363
- DEFAULT_ASSET_URL5 = {
8361
+ DEFAULT_ASSET_URL4 = {
8364
8362
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/symbol_01.png",
8365
8363
  role: "ui",
8366
8364
  category: "turn"
@@ -8380,7 +8378,7 @@ function getComboScale(combo) {
8380
8378
  return "";
8381
8379
  }
8382
8380
  function ComboCounter({
8383
- assetUrl = DEFAULT_ASSET_URL6,
8381
+ assetUrl = DEFAULT_ASSET_URL5,
8384
8382
  combo = 5,
8385
8383
  multiplier,
8386
8384
  streak,
@@ -8415,14 +8413,14 @@ function ComboCounter({
8415
8413
  }
8416
8414
  );
8417
8415
  }
8418
- var DEFAULT_ASSET_URL6, sizeMap9;
8416
+ var DEFAULT_ASSET_URL5, sizeMap9;
8419
8417
  var init_ComboCounter = __esm({
8420
8418
  "components/game/2d/atoms/ComboCounter.tsx"() {
8421
8419
  init_cn();
8422
8420
  init_Box();
8423
8421
  init_Typography();
8424
8422
  init_GameIcon();
8425
- DEFAULT_ASSET_URL6 = {
8423
+ DEFAULT_ASSET_URL5 = {
8426
8424
  url: "https://almadar-kflow-assets.web.app/shared/effects/flash/flash00.png",
8427
8425
  role: "effect",
8428
8426
  category: "effect"
@@ -8436,7 +8434,7 @@ var init_ComboCounter = __esm({
8436
8434
  }
8437
8435
  });
8438
8436
  function WaypointMarker({
8439
- assetUrl = DEFAULT_ASSET_URL7,
8437
+ assetUrl = DEFAULT_ASSET_URL6,
8440
8438
  label,
8441
8439
  icon,
8442
8440
  active = true,
@@ -8496,7 +8494,7 @@ function WaypointMarker({
8496
8494
  )
8497
8495
  ] });
8498
8496
  }
8499
- var DEFAULT_ASSET_URL7, sizeMap10, checkIcon;
8497
+ var DEFAULT_ASSET_URL6, sizeMap10, checkIcon;
8500
8498
  var init_WaypointMarker = __esm({
8501
8499
  "components/game/2d/atoms/WaypointMarker.tsx"() {
8502
8500
  init_cn();
@@ -8504,7 +8502,7 @@ var init_WaypointMarker = __esm({
8504
8502
  init_Box();
8505
8503
  init_Typography();
8506
8504
  init_GameIcon();
8507
- DEFAULT_ASSET_URL7 = {
8505
+ DEFAULT_ASSET_URL6 = {
8508
8506
  url: "https://almadar-kflow-assets.web.app/shared/world-map/battle_marker.png",
8509
8507
  role: "ui",
8510
8508
  category: "waypoint"
@@ -8525,7 +8523,7 @@ function formatDuration(seconds) {
8525
8523
  return `${Math.round(seconds)}s`;
8526
8524
  }
8527
8525
  function StatusEffect({
8528
- assetUrl = DEFAULT_ASSET_URL8,
8526
+ assetUrl = DEFAULT_ASSET_URL7,
8529
8527
  icon,
8530
8528
  label = "Shield",
8531
8529
  duration = 30,
@@ -8576,7 +8574,7 @@ function StatusEffect({
8576
8574
  label && /* @__PURE__ */ jsx(Typography, { as: "span", className: "text-xs text-muted-foreground mt-0.5 text-center whitespace-nowrap", children: label })
8577
8575
  ] });
8578
8576
  }
8579
- var DEFAULT_ASSET_URL8, sizeMap11, variantStyles7;
8577
+ var DEFAULT_ASSET_URL7, sizeMap11, variantStyles7;
8580
8578
  var init_StatusEffect = __esm({
8581
8579
  "components/game/2d/atoms/StatusEffect.tsx"() {
8582
8580
  init_cn();
@@ -8584,7 +8582,7 @@ var init_StatusEffect = __esm({
8584
8582
  init_Box();
8585
8583
  init_Typography();
8586
8584
  init_GameIcon();
8587
- DEFAULT_ASSET_URL8 = {
8585
+ DEFAULT_ASSET_URL7 = {
8588
8586
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/flame_01.png",
8589
8587
  role: "ui",
8590
8588
  category: "effect"
@@ -8603,7 +8601,7 @@ var init_StatusEffect = __esm({
8603
8601
  }
8604
8602
  });
8605
8603
  function DamageNumber({
8606
- assetUrl = DEFAULT_ASSET_URL9,
8604
+ assetUrl = DEFAULT_ASSET_URL8,
8607
8605
  value = 42,
8608
8606
  type = "damage",
8609
8607
  size = "md",
@@ -8631,7 +8629,7 @@ function DamageNumber({
8631
8629
  )
8632
8630
  ] });
8633
8631
  }
8634
- var sizeMap12, typeStyles, floatKeyframes, DEFAULT_ASSET_URL9;
8632
+ var sizeMap12, typeStyles, floatKeyframes, DEFAULT_ASSET_URL8;
8635
8633
  var init_DamageNumber = __esm({
8636
8634
  "components/game/2d/atoms/DamageNumber.tsx"() {
8637
8635
  init_cn();
@@ -8655,7 +8653,7 @@ var init_DamageNumber = __esm({
8655
8653
  100% { opacity: 0; transform: translateY(-32px) scale(0.8); }
8656
8654
  }
8657
8655
  `;
8658
- DEFAULT_ASSET_URL9 = {
8656
+ DEFAULT_ASSET_URL8 = {
8659
8657
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/spark_01.png",
8660
8658
  role: "effect",
8661
8659
  category: "effect"
@@ -8781,7 +8779,7 @@ var init_ChoiceButton = __esm({
8781
8779
  }
8782
8780
  });
8783
8781
  function ActionButton({
8784
- assetUrl = DEFAULT_ASSET_URL10,
8782
+ assetUrl = DEFAULT_ASSET_URL9,
8785
8783
  label = "Attack",
8786
8784
  icon,
8787
8785
  cooldown = 0,
@@ -8850,7 +8848,7 @@ function ActionButton({
8850
8848
  }
8851
8849
  );
8852
8850
  }
8853
- var sizeMap13, variantStyles8, DEFAULT_ASSET_URL10;
8851
+ var sizeMap13, variantStyles8, DEFAULT_ASSET_URL9;
8854
8852
  var init_ActionButton = __esm({
8855
8853
  "components/game/2d/atoms/ActionButton.tsx"() {
8856
8854
  init_cn();
@@ -8870,7 +8868,7 @@ var init_ActionButton = __esm({
8870
8868
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary-hover border-border",
8871
8869
  danger: "bg-error text-error-foreground hover:bg-error/90 border-error"
8872
8870
  };
8873
- DEFAULT_ASSET_URL10 = {
8871
+ DEFAULT_ASSET_URL9 = {
8874
8872
  url: "https://almadar-kflow-assets.web.app/shared/effects/particles/slash_01.png",
8875
8873
  role: "ui",
8876
8874
  category: "action"
@@ -9090,15 +9088,17 @@ function ControlGrid({
9090
9088
  },
9091
9089
  d
9092
9090
  );
9091
+ const usesSemantic = !!directionEvents;
9092
+ const cell = (d) => !usesSemantic || directionEvents?.[d] ? dir(d) : /* @__PURE__ */ jsx(Box, {}, d);
9093
9093
  return /* @__PURE__ */ jsxs(Box, { className: cn("inline-grid grid-cols-3", ds.gap, ds.container, className), children: [
9094
9094
  /* @__PURE__ */ jsx(Box, {}),
9095
- dir("up"),
9095
+ cell("up"),
9096
9096
  /* @__PURE__ */ jsx(Box, {}),
9097
- dir("left"),
9097
+ cell("left"),
9098
9098
  /* @__PURE__ */ jsx(Box, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx(Box, { className: "w-6 h-6 rounded-interactive bg-muted border-2 border-muted-foreground" }) }),
9099
- dir("right"),
9099
+ cell("right"),
9100
9100
  /* @__PURE__ */ jsx(Box, {}),
9101
- dir("down"),
9101
+ cell("down"),
9102
9102
  /* @__PURE__ */ jsx(Box, {})
9103
9103
  ] });
9104
9104
  }