@almadar/ui 5.39.0 → 5.41.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.
@@ -8224,7 +8224,7 @@ var init_Accordion = __esm({
8224
8224
  }
8225
8225
  });
8226
8226
  function ActionButton({
8227
- label,
8227
+ label = "Attack",
8228
8228
  icon,
8229
8229
  cooldown = 0,
8230
8230
  disabled = false,
@@ -8411,7 +8411,7 @@ var init_ControlButton = __esm({
8411
8411
  }
8412
8412
  });
8413
8413
  function ActionButtons({
8414
- buttons,
8414
+ buttons = DEFAULT_BUTTONS,
8415
8415
  onAction,
8416
8416
  actionEvent,
8417
8417
  layout = "horizontal",
@@ -8518,7 +8518,7 @@ function ActionButtons({
8518
8518
  button.id
8519
8519
  )) });
8520
8520
  }
8521
- var sizeMap3, layoutMap;
8521
+ var sizeMap3, layoutMap, DEFAULT_BUTTONS;
8522
8522
  var init_ActionButtons = __esm({
8523
8523
  "components/game/molecules/ActionButtons.tsx"() {
8524
8524
  "use client";
@@ -8535,6 +8535,11 @@ var init_ActionButtons = __esm({
8535
8535
  vertical: "flex flex-col gap-2",
8536
8536
  diamond: "grid grid-cols-3 gap-1"
8537
8537
  };
8538
+ DEFAULT_BUTTONS = [
8539
+ { id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
8540
+ { id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
8541
+ { id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
8542
+ ];
8538
8543
  ActionButtons.displayName = "ActionButtons";
8539
8544
  }
8540
8545
  });
@@ -9625,7 +9630,7 @@ function IsometricCanvas({
9625
9630
  // Rendering options
9626
9631
  scale = 0.4,
9627
9632
  debug: debug2 = false,
9628
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
9633
+ backgroundImage = "",
9629
9634
  showMinimap = true,
9630
9635
  enableCamera = true,
9631
9636
  unitScale = 1,
@@ -10764,10 +10769,10 @@ function BattleTemplate({
10764
10769
  entity,
10765
10770
  scale = 0.45,
10766
10771
  unitScale = 1,
10767
- tiles,
10768
- units,
10769
- features,
10770
- assetManifest,
10772
+ tiles = DEFAULT_BATTLE_TILES,
10773
+ units = DEFAULT_BATTLE_UNITS,
10774
+ features = DEFAULT_BATTLE_FEATURES,
10775
+ assetManifest = DEFAULT_BATTLE_MANIFEST,
10771
10776
  className
10772
10777
  }) {
10773
10778
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -10793,9 +10798,62 @@ function BattleTemplate({
10793
10798
  }
10794
10799
  );
10795
10800
  }
10801
+ var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
10796
10802
  var init_BattleTemplate = __esm({
10797
10803
  "components/game/templates/BattleTemplate.tsx"() {
10798
10804
  init_BattleBoard();
10805
+ CDN = "https://almadar-kflow-assets.web.app/shared";
10806
+ DEFAULT_BATTLE_TILES = [
10807
+ { x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10808
+ { x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10809
+ { x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10810
+ { x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10811
+ { x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10812
+ { x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10813
+ { x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10814
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10815
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10816
+ { x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10817
+ { x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10818
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10819
+ { x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10820
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10821
+ { x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10822
+ { x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10823
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10824
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10825
+ { x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10826
+ { x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10827
+ { x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10828
+ { x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10829
+ { x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10830
+ { x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10831
+ { x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
10832
+ ];
10833
+ DEFAULT_BATTLE_UNITS = [
10834
+ { id: "u1", position: { x: 1, y: 1 }, unitType: "worker", name: "Worker", team: "player", health: 10, maxHealth: 10, sprite: `${CDN}/sprite-sheets/amir-sprite-sheet-se.png` },
10835
+ { id: "u2", position: { x: 3, y: 3 }, unitType: "guardian", name: "Guardian", team: "enemy", health: 8, maxHealth: 10, sprite: `${CDN}/sprite-sheets/destroyer-sprite-sheet-sw.png` }
10836
+ ];
10837
+ DEFAULT_BATTLE_FEATURES = [
10838
+ { id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
10839
+ { id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
10840
+ ];
10841
+ DEFAULT_BATTLE_MANIFEST = {
10842
+ baseUrl: CDN,
10843
+ terrains: {
10844
+ stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
10845
+ dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
10846
+ grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
10847
+ },
10848
+ units: {
10849
+ worker: "/sprite-sheets/amir-sprite-sheet-se.png",
10850
+ guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
10851
+ },
10852
+ features: {
10853
+ gold_mine: "/world-map/gold_mine.png",
10854
+ portal: "/world-map/portal_open.png"
10855
+ }
10856
+ };
10799
10857
  BattleTemplate.displayName = "BattleTemplate";
10800
10858
  }
10801
10859
  });
@@ -18795,10 +18853,10 @@ var init_CastleBoard = __esm({
18795
18853
  function CastleTemplate({
18796
18854
  entity,
18797
18855
  scale = 0.45,
18798
- tiles,
18799
- units,
18800
- features,
18801
- assetManifest,
18856
+ tiles = DEFAULT_CASTLE_TILES,
18857
+ units = DEFAULT_CASTLE_UNITS,
18858
+ features = DEFAULT_CASTLE_FEATURES,
18859
+ assetManifest = DEFAULT_CASTLE_MANIFEST,
18802
18860
  className
18803
18861
  }) {
18804
18862
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -18819,9 +18877,61 @@ function CastleTemplate({
18819
18877
  }
18820
18878
  );
18821
18879
  }
18880
+ var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
18822
18881
  var init_CastleTemplate = __esm({
18823
18882
  "components/game/templates/CastleTemplate.tsx"() {
18824
18883
  init_CastleBoard();
18884
+ CDN2 = "https://almadar-kflow-assets.web.app/shared";
18885
+ DEFAULT_CASTLE_TILES = [
18886
+ { x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18887
+ { x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18888
+ { x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18889
+ { x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18890
+ { x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18891
+ { x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18892
+ { x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18893
+ { x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18894
+ { x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18895
+ { x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18896
+ { x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18897
+ { x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18898
+ { x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
18899
+ { x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18900
+ { x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18901
+ { x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18902
+ { x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18903
+ { x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18904
+ { x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18905
+ { x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18906
+ { x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18907
+ { x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18908
+ { x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18909
+ { x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18910
+ { x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
18911
+ ];
18912
+ DEFAULT_CASTLE_UNITS = [
18913
+ { id: "u1", position: { x: 1, y: 1 }, unitType: "worker", name: "Worker", team: "player", health: 10, maxHealth: 10, sprite: `${CDN2}/sprite-sheets/coordinator-sprite-sheet-se.png` },
18914
+ { id: "u2", position: { x: 3, y: 3 }, unitType: "guardian", name: "Guardian", team: "player", health: 10, maxHealth: 10, sprite: `${CDN2}/sprite-sheets/forger-sprite-sheet-se.png` }
18915
+ ];
18916
+ DEFAULT_CASTLE_FEATURES = [
18917
+ { id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
18918
+ { id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
18919
+ ];
18920
+ DEFAULT_CASTLE_MANIFEST = {
18921
+ baseUrl: CDN2,
18922
+ terrains: {
18923
+ wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
18924
+ floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
18925
+ },
18926
+ units: {
18927
+ worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
18928
+ guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
18929
+ },
18930
+ features: {
18931
+ chest: "/world-map/treasure_chest_closed.png",
18932
+ crystal: "/world-map/resonance_crystal.png"
18933
+ }
18934
+ };
18825
18935
  CastleTemplate.displayName = "CastleTemplate";
18826
18936
  }
18827
18937
  });
@@ -19600,7 +19710,7 @@ var init_ChartLegend = __esm({
19600
19710
  }
19601
19711
  });
19602
19712
  function ChoiceButton({
19603
- text,
19713
+ text = "Charge forward into the fray",
19604
19714
  index,
19605
19715
  disabled = false,
19606
19716
  selected = false,
@@ -19989,7 +20099,7 @@ var init_CodeRunnerPanel = __esm({
19989
20099
  }
19990
20100
  });
19991
20101
  function CombatLog({
19992
- events: events2,
20102
+ events: events2 = DEFAULT_COMBAT_EVENTS,
19993
20103
  maxVisible = 50,
19994
20104
  autoScroll = true,
19995
20105
  showTimestamps = false,
@@ -20040,7 +20150,7 @@ function CombatLog({
20040
20150
  }) }) })
20041
20151
  ] });
20042
20152
  }
20043
- var eventIcons, eventColors, eventBadgeVariants;
20153
+ var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
20044
20154
  var init_CombatLog = __esm({
20045
20155
  "components/game/molecules/CombatLog.tsx"() {
20046
20156
  init_atoms2();
@@ -20072,6 +20182,13 @@ var init_CombatLog = __esm({
20072
20182
  death: "secondary",
20073
20183
  spawn: "secondary"
20074
20184
  };
20185
+ DEFAULT_COMBAT_EVENTS = [
20186
+ { id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
20187
+ { id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
20188
+ { id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
20189
+ { id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
20190
+ { id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
20191
+ ];
20075
20192
  CombatLog.displayName = "CombatLog";
20076
20193
  }
20077
20194
  });
@@ -20087,7 +20204,7 @@ function getComboScale(combo) {
20087
20204
  return "";
20088
20205
  }
20089
20206
  function ComboCounter({
20090
- combo,
20207
+ combo = 5,
20091
20208
  multiplier,
20092
20209
  streak,
20093
20210
  size = "md",
@@ -20532,10 +20649,11 @@ var init_CounterTemplate = __esm({
20532
20649
  }
20533
20650
  });
20534
20651
  function ItemSlot({
20535
- icon,
20536
- label,
20652
+ assetUrl = DEFAULT_ASSET_URL,
20653
+ icon = "sword",
20654
+ label = "Iron Sword",
20537
20655
  quantity,
20538
- rarity = "common",
20656
+ rarity = "uncommon",
20539
20657
  empty,
20540
20658
  size = "md",
20541
20659
  selected,
@@ -20543,6 +20661,7 @@ function ItemSlot({
20543
20661
  className
20544
20662
  }) {
20545
20663
  const isClickable = onClick != null;
20664
+ const px = assetSizeMap[size];
20546
20665
  return /* @__PURE__ */ jsxRuntime.jsx(
20547
20666
  "button",
20548
20667
  {
@@ -20563,7 +20682,17 @@ function ItemSlot({
20563
20682
  className
20564
20683
  ),
20565
20684
  children: empty ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
20566
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon }) }),
20685
+ assetUrl ? /* @__PURE__ */ jsxRuntime.jsx(
20686
+ "img",
20687
+ {
20688
+ src: assetUrl,
20689
+ alt: label,
20690
+ width: px,
20691
+ height: px,
20692
+ style: { imageRendering: "pixelated", objectFit: "contain" },
20693
+ className: "flex-shrink-0"
20694
+ }
20695
+ ) : icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { name: icon }) : /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { icon }) }) : null,
20567
20696
  quantity != null && quantity > 1 && /* @__PURE__ */ jsxRuntime.jsx(
20568
20697
  "span",
20569
20698
  {
@@ -20579,7 +20708,7 @@ function ItemSlot({
20579
20708
  }
20580
20709
  );
20581
20710
  }
20582
- var sizeMap5, rarityBorderMap, rarityGlowMap;
20711
+ var sizeMap5, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL, assetSizeMap;
20583
20712
  var init_ItemSlot = __esm({
20584
20713
  "components/game/atoms/ItemSlot.tsx"() {
20585
20714
  "use client";
@@ -20604,6 +20733,12 @@ var init_ItemSlot = __esm({
20604
20733
  epic: "shadow-lg",
20605
20734
  legendary: "shadow-lg"
20606
20735
  };
20736
+ DEFAULT_ASSET_URL = "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png";
20737
+ assetSizeMap = {
20738
+ sm: 28,
20739
+ md: 40,
20740
+ lg: 56
20741
+ };
20607
20742
  ItemSlot.displayName = "ItemSlot";
20608
20743
  }
20609
20744
  });
@@ -20612,9 +20747,9 @@ function isValidRarity(value) {
20612
20747
  return rarityValues.includes(value);
20613
20748
  }
20614
20749
  function CraftingRecipe({
20615
- inputs,
20616
- output,
20617
- canCraft = false,
20750
+ inputs = DEFAULT_INPUTS,
20751
+ output = DEFAULT_OUTPUT,
20752
+ canCraft = true,
20618
20753
  onCraft,
20619
20754
  craftEvent,
20620
20755
  className
@@ -20675,7 +20810,7 @@ function CraftingRecipe({
20675
20810
  }
20676
20811
  );
20677
20812
  }
20678
- var rarityValues;
20813
+ var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
20679
20814
  var init_CraftingRecipe = __esm({
20680
20815
  "components/game/molecules/CraftingRecipe.tsx"() {
20681
20816
  "use client";
@@ -20687,6 +20822,15 @@ var init_CraftingRecipe = __esm({
20687
20822
  init_Stack();
20688
20823
  init_Icon();
20689
20824
  rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
20825
+ DEFAULT_INPUTS = [
20826
+ { icon: "gem", label: "Iron Ore", required: 2, available: 3 },
20827
+ { icon: "flame", label: "Coal", required: 1, available: 1 }
20828
+ ];
20829
+ DEFAULT_OUTPUT = {
20830
+ icon: "sword",
20831
+ label: "Iron Sword",
20832
+ rarity: "uncommon"
20833
+ };
20690
20834
  CraftingRecipe.displayName = "CraftingRecipe";
20691
20835
  }
20692
20836
  });
@@ -20768,7 +20912,7 @@ var init_DPad = __esm({
20768
20912
  }
20769
20913
  });
20770
20914
  function DamageNumber({
20771
- value,
20915
+ value = 42,
20772
20916
  type = "damage",
20773
20917
  size = "md",
20774
20918
  className
@@ -26845,8 +26989,8 @@ var init_ProgressDots = __esm({
26845
26989
  }
26846
26990
  });
26847
26991
  function HealthBar({
26848
- current,
26849
- max,
26992
+ current = 3,
26993
+ max = 5,
26850
26994
  format = "hearts",
26851
26995
  size = "md",
26852
26996
  className,
@@ -27066,10 +27210,10 @@ var init_StatBadge = __esm({
27066
27210
  }
27067
27211
  });
27068
27212
  function InventoryGrid({
27069
- items,
27213
+ items = DEFAULT_GRID_ITEMS,
27070
27214
  columns = 4,
27071
- totalSlots,
27072
- selectedId,
27215
+ totalSlots = 12,
27216
+ selectedId = "",
27073
27217
  onSelect,
27074
27218
  selectEvent,
27075
27219
  size = "md",
@@ -27118,7 +27262,7 @@ function InventoryGrid({
27118
27262
  }
27119
27263
  );
27120
27264
  }
27121
- var columnMap;
27265
+ var columnMap, DEFAULT_GRID_ITEMS;
27122
27266
  var init_InventoryGrid = __esm({
27123
27267
  "components/game/molecules/InventoryGrid.tsx"() {
27124
27268
  "use client";
@@ -27135,13 +27279,19 @@ var init_InventoryGrid = __esm({
27135
27279
  7: "grid-cols-7",
27136
27280
  8: "grid-cols-8"
27137
27281
  };
27282
+ DEFAULT_GRID_ITEMS = [
27283
+ { id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
27284
+ { id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
27285
+ { id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
27286
+ { id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
27287
+ ];
27138
27288
  InventoryGrid.displayName = "InventoryGrid";
27139
27289
  }
27140
27290
  });
27141
27291
  function WaypointMarker({
27142
27292
  label,
27143
27293
  icon,
27144
- active = false,
27294
+ active = true,
27145
27295
  completed = false,
27146
27296
  size = "md",
27147
27297
  className
@@ -27209,8 +27359,8 @@ var init_WaypointMarker = __esm({
27209
27359
  }
27210
27360
  });
27211
27361
  function QuestTracker({
27212
- quests,
27213
- activeQuestId,
27362
+ quests = DEFAULT_QUESTS,
27363
+ activeQuestId = "q2",
27214
27364
  className
27215
27365
  }) {
27216
27366
  return /* @__PURE__ */ jsxRuntime.jsx(exports.VStack, { gap: "sm", className, children: quests.map((quest) => {
@@ -27276,6 +27426,7 @@ function QuestTracker({
27276
27426
  );
27277
27427
  }) });
27278
27428
  }
27429
+ var DEFAULT_QUESTS;
27279
27430
  var init_QuestTracker = __esm({
27280
27431
  "components/game/molecules/QuestTracker.tsx"() {
27281
27432
  "use client";
@@ -27285,6 +27436,11 @@ var init_QuestTracker = __esm({
27285
27436
  init_Typography();
27286
27437
  init_Box();
27287
27438
  init_Stack();
27439
+ DEFAULT_QUESTS = [
27440
+ { id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
27441
+ { id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
27442
+ { id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
27443
+ ];
27288
27444
  QuestTracker.displayName = "QuestTracker";
27289
27445
  }
27290
27446
  });
@@ -27297,7 +27453,7 @@ function formatTime(seconds) {
27297
27453
  return `${seconds}s`;
27298
27454
  }
27299
27455
  function PowerupSlots({
27300
- active,
27456
+ active = DEFAULT_ACTIVE_POWERUPS,
27301
27457
  maxSlots = 4,
27302
27458
  className
27303
27459
  }) {
@@ -27342,6 +27498,7 @@ function PowerupSlots({
27342
27498
  ))
27343
27499
  ] });
27344
27500
  }
27501
+ var DEFAULT_ACTIVE_POWERUPS;
27345
27502
  var init_PowerupSlots = __esm({
27346
27503
  "components/game/molecules/PowerupSlots.tsx"() {
27347
27504
  "use client";
@@ -27350,6 +27507,10 @@ var init_PowerupSlots = __esm({
27350
27507
  init_Box();
27351
27508
  init_Stack();
27352
27509
  init_Typography();
27510
+ DEFAULT_ACTIVE_POWERUPS = [
27511
+ { id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
27512
+ { id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
27513
+ ];
27353
27514
  PowerupSlots.displayName = "PowerupSlots";
27354
27515
  }
27355
27516
  });
@@ -27361,7 +27522,7 @@ function GameCanvas2D({
27361
27522
  tickEvent,
27362
27523
  drawEvent,
27363
27524
  fps = 60,
27364
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
27525
+ backgroundImage = "",
27365
27526
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
27366
27527
  className
27367
27528
  }) {
@@ -27465,10 +27626,10 @@ var init_GameCanvas2D = __esm({
27465
27626
  }
27466
27627
  });
27467
27628
  function HealthPanel({
27468
- current,
27469
- max,
27470
- shield,
27471
- label,
27629
+ current = 75,
27630
+ max = 100,
27631
+ shield = 20,
27632
+ label = "Player HP",
27472
27633
  effects,
27473
27634
  showNumbers = true,
27474
27635
  size = "md",
@@ -27586,11 +27747,11 @@ var init_HealthPanel = __esm({
27586
27747
  }
27587
27748
  });
27588
27749
  function ScoreBoard({
27589
- score: rawScore,
27590
- highScore: rawHighScore,
27591
- combo: rawCombo,
27592
- multiplier: rawMultiplier,
27593
- level: rawLevel,
27750
+ score: rawScore = 4200,
27751
+ highScore: rawHighScore = 8750,
27752
+ combo: rawCombo = 3,
27753
+ multiplier: rawMultiplier = 2,
27754
+ level: rawLevel = 4,
27594
27755
  className
27595
27756
  }) {
27596
27757
  const score = rawScore ?? 0;
@@ -27663,7 +27824,7 @@ var init_ScoreBoard = __esm({
27663
27824
  }
27664
27825
  });
27665
27826
  function ResourceBar({
27666
- resources,
27827
+ resources = DEFAULT_RESOURCES,
27667
27828
  size = "md",
27668
27829
  className
27669
27830
  }) {
@@ -27689,17 +27850,23 @@ function ResourceBar({
27689
27850
  }
27690
27851
  );
27691
27852
  }
27853
+ var DEFAULT_RESOURCES;
27692
27854
  var init_ResourceBar = __esm({
27693
27855
  "components/game/molecules/ResourceBar.tsx"() {
27694
27856
  "use client";
27695
27857
  init_cn();
27696
27858
  init_StatBadge();
27697
27859
  init_Box();
27860
+ DEFAULT_RESOURCES = [
27861
+ { icon: "coins", label: "Gold", value: 320 },
27862
+ { icon: "zap", label: "Energy", value: 7, max: 10 },
27863
+ { icon: "gem", label: "Crystals", value: 15 }
27864
+ ];
27698
27865
  ResourceBar.displayName = "ResourceBar";
27699
27866
  }
27700
27867
  });
27701
27868
  function TurnIndicator({
27702
- currentTurn,
27869
+ currentTurn = 1,
27703
27870
  maxTurns,
27704
27871
  activeTeam,
27705
27872
  phase,
@@ -27751,11 +27918,11 @@ var init_TurnIndicator = __esm({
27751
27918
  }
27752
27919
  });
27753
27920
  function TurnPanel({
27754
- currentTurn,
27755
- maxTurns,
27756
- phase,
27757
- activeTeam,
27758
- actions,
27921
+ currentTurn = 3,
27922
+ maxTurns = 10,
27923
+ phase = "Attack",
27924
+ activeTeam = "Heroes",
27925
+ actions = DEFAULT_TURN_ACTIONS,
27759
27926
  className
27760
27927
  }) {
27761
27928
  const eventBus = useEventBus();
@@ -27800,6 +27967,7 @@ function TurnPanel({
27800
27967
  }
27801
27968
  );
27802
27969
  }
27970
+ var DEFAULT_TURN_ACTIONS;
27803
27971
  var init_TurnPanel = __esm({
27804
27972
  "components/game/molecules/TurnPanel.tsx"() {
27805
27973
  "use client";
@@ -27808,15 +27976,19 @@ var init_TurnPanel = __esm({
27808
27976
  init_Button();
27809
27977
  init_Box();
27810
27978
  init_useEventBus();
27979
+ DEFAULT_TURN_ACTIONS = [
27980
+ { label: "End Turn", icon: "skip-forward", event: "END_TURN" },
27981
+ { label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
27982
+ ];
27811
27983
  TurnPanel.displayName = "TurnPanel";
27812
27984
  }
27813
27985
  });
27814
27986
  function EnemyPlate({
27815
- name,
27816
- health,
27817
- maxHealth,
27818
- level,
27819
- effects,
27987
+ name = "Shadow Guard",
27988
+ health = 80,
27989
+ maxHealth = 100,
27990
+ level = 5,
27991
+ effects = DEFAULT_ENEMY_EFFECTS,
27820
27992
  className
27821
27993
  }) {
27822
27994
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -27882,7 +28054,7 @@ function EnemyPlate({
27882
28054
  }
27883
28055
  );
27884
28056
  }
27885
- var effectVariantMap2;
28057
+ var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
27886
28058
  var init_EnemyPlate = __esm({
27887
28059
  "components/game/molecules/EnemyPlate.tsx"() {
27888
28060
  "use client";
@@ -27896,12 +28068,15 @@ var init_EnemyPlate = __esm({
27896
28068
  debuff: "danger",
27897
28069
  neutral: "neutral"
27898
28070
  };
28071
+ DEFAULT_ENEMY_EFFECTS = [
28072
+ { icon: "flame", label: "Burn", variant: "debuff" }
28073
+ ];
27899
28074
  EnemyPlate.displayName = "EnemyPlate";
27900
28075
  }
27901
28076
  });
27902
28077
  function UnitCommandBar({
27903
- commands,
27904
- selectedUnitId,
28078
+ commands = DEFAULT_COMMANDS,
28079
+ selectedUnitId = "unit-1",
27905
28080
  className
27906
28081
  }) {
27907
28082
  const eventBus = useEventBus();
@@ -27944,6 +28119,7 @@ function UnitCommandBar({
27944
28119
  }
27945
28120
  );
27946
28121
  }
28122
+ var DEFAULT_COMMANDS;
27947
28123
  var init_UnitCommandBar = __esm({
27948
28124
  "components/game/molecules/UnitCommandBar.tsx"() {
27949
28125
  "use client";
@@ -27952,6 +28128,12 @@ var init_UnitCommandBar = __esm({
27952
28128
  init_Box();
27953
28129
  init_Typography();
27954
28130
  init_useEventBus();
28131
+ DEFAULT_COMMANDS = [
28132
+ { label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
28133
+ { label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
28134
+ { label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
28135
+ { label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
28136
+ ];
27955
28137
  UnitCommandBar.displayName = "UnitCommandBar";
27956
28138
  }
27957
28139
  });
@@ -27985,7 +28167,7 @@ function GameHud({
27985
28167
  className,
27986
28168
  transparent = true
27987
28169
  }) {
27988
- const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : []);
28170
+ const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
27989
28171
  const stats = Array.isArray(rawStats) ? rawStats : [];
27990
28172
  const position = propPosition ?? "corners";
27991
28173
  if (position === "corners") {
@@ -28010,7 +28192,7 @@ function GameHud({
28010
28192
  }
28011
28193
  );
28012
28194
  }
28013
- var positionMap;
28195
+ var positionMap, DEFAULT_HUD_STATS;
28014
28196
  var init_GameHud = __esm({
28015
28197
  "components/game/molecules/GameHud.tsx"() {
28016
28198
  init_cn();
@@ -28020,11 +28202,17 @@ var init_GameHud = __esm({
28020
28202
  bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
28021
28203
  corners: "inset-0 pointer-events-none"
28022
28204
  };
28205
+ DEFAULT_HUD_STATS = [
28206
+ { label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
28207
+ { label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
28208
+ { label: "Score", value: 4200, format: "number", variant: "warning" },
28209
+ { label: "Level", value: 4, format: "number", variant: "default" }
28210
+ ];
28023
28211
  GameHud.displayName = "GameHud";
28024
28212
  }
28025
28213
  });
28026
28214
  function DialogueBox({
28027
- dialogue,
28215
+ dialogue = DEFAULT_DIALOGUE,
28028
28216
  typewriterSpeed = 30,
28029
28217
  position = "bottom",
28030
28218
  onComplete,
@@ -28207,17 +28395,27 @@ function DialogueBox({
28207
28395
  }
28208
28396
  );
28209
28397
  }
28398
+ var DEFAULT_DIALOGUE;
28210
28399
  var init_DialogueBox = __esm({
28211
28400
  "components/game/molecules/DialogueBox.tsx"() {
28212
28401
  "use client";
28213
28402
  init_cn();
28214
28403
  init_useEventBus();
28404
+ DEFAULT_DIALOGUE = {
28405
+ speaker: "Village Elder",
28406
+ text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
28407
+ choices: [
28408
+ { text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
28409
+ { text: "Tell me more about the ruins.", action: "ASK_LORE" },
28410
+ { text: "Perhaps another time.", action: "DECLINE" }
28411
+ ]
28412
+ };
28215
28413
  }
28216
28414
  });
28217
28415
  function InventoryPanel({
28218
- items,
28219
- slots,
28220
- columns,
28416
+ items = DEFAULT_INVENTORY_ITEMS,
28417
+ slots = 12,
28418
+ columns = 4,
28221
28419
  selectedSlot,
28222
28420
  onSelectSlot,
28223
28421
  onUseItem,
@@ -28365,25 +28563,31 @@ function InventoryPanel({
28365
28563
  )
28366
28564
  ] });
28367
28565
  }
28566
+ var DEFAULT_INVENTORY_ITEMS;
28368
28567
  var init_InventoryPanel = __esm({
28369
28568
  "components/game/molecules/InventoryPanel.tsx"() {
28370
28569
  "use client";
28371
28570
  init_cn();
28372
28571
  init_useEventBus();
28572
+ DEFAULT_INVENTORY_ITEMS = [
28573
+ { id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
28574
+ { id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
28575
+ { id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
28576
+ ];
28373
28577
  }
28374
28578
  });
28375
28579
  function GameMenu({
28376
- title,
28580
+ title = "Epic Quest",
28377
28581
  subtitle,
28378
28582
  options,
28379
28583
  menuItems,
28380
28584
  onSelect,
28381
28585
  eventBus: eventBusProp,
28382
28586
  background,
28383
- logo,
28587
+ logo = "",
28384
28588
  className
28385
28589
  }) {
28386
- const resolvedOptions = options ?? menuItems ?? [];
28590
+ const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
28387
28591
  let eventBusFromHook = null;
28388
28592
  try {
28389
28593
  eventBusFromHook = useEventBus();
@@ -28464,7 +28668,7 @@ function GameMenu({
28464
28668
  }
28465
28669
  );
28466
28670
  }
28467
- var variantMap3;
28671
+ var variantMap3, DEFAULT_MENU_OPTIONS;
28468
28672
  var init_GameMenu = __esm({
28469
28673
  "components/game/molecules/GameMenu.tsx"() {
28470
28674
  "use client";
@@ -28475,6 +28679,11 @@ var init_GameMenu = __esm({
28475
28679
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28476
28680
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28477
28681
  };
28682
+ DEFAULT_MENU_OPTIONS = [
28683
+ { label: "New Game", event: "NEW_GAME", variant: "primary" },
28684
+ { label: "Continue", event: "CONTINUE", variant: "secondary" },
28685
+ { label: "Settings", event: "SETTINGS", variant: "ghost" }
28686
+ ];
28478
28687
  GameMenu.displayName = "GameMenu";
28479
28688
  }
28480
28689
  });
@@ -28485,19 +28694,19 @@ function formatTime2(ms) {
28485
28694
  return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
28486
28695
  }
28487
28696
  function GameOverScreen({
28488
- title,
28697
+ title = "Game Over",
28489
28698
  message,
28490
- stats = [],
28699
+ stats = DEFAULT_GAME_OVER_STATS,
28491
28700
  actions,
28492
28701
  menuItems,
28493
28702
  onAction,
28494
28703
  eventBus: eventBusProp,
28495
- variant = "neutral",
28496
- highScore,
28497
- currentScore,
28704
+ variant = "defeat",
28705
+ highScore = 2e3,
28706
+ currentScore = 1240,
28498
28707
  className
28499
28708
  }) {
28500
- const resolvedActions = actions ?? menuItems ?? [];
28709
+ const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
28501
28710
  let eventBusFromHook = null;
28502
28711
  try {
28503
28712
  eventBusFromHook = useEventBus();
@@ -28584,7 +28793,7 @@ function GameOverScreen({
28584
28793
  }
28585
28794
  );
28586
28795
  }
28587
- var variantColors, buttonVariants;
28796
+ var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
28588
28797
  var init_GameOverScreen = __esm({
28589
28798
  "components/game/molecules/GameOverScreen.tsx"() {
28590
28799
  "use client";
@@ -28613,21 +28822,35 @@ var init_GameOverScreen = __esm({
28613
28822
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28614
28823
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28615
28824
  };
28825
+ DEFAULT_GAME_OVER_ACTIONS = [
28826
+ { label: "Play Again", event: "RESTART", variant: "primary" },
28827
+ { label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
28828
+ ];
28829
+ DEFAULT_GAME_OVER_STATS = [
28830
+ { label: "Score", value: 1240 },
28831
+ { label: "Enemies Defeated", value: 8 },
28832
+ { label: "Time", value: 93e3, format: "time" }
28833
+ ];
28616
28834
  GameOverScreen.displayName = "GameOverScreen";
28617
28835
  }
28618
28836
  });
28619
28837
  function PlatformerCanvas({
28620
28838
  player,
28621
- platforms = [],
28839
+ platforms = [
28840
+ { x: 0, y: 368, width: 800, height: 32, type: "ground" },
28841
+ { x: 150, y: 280, width: 160, height: 16, type: "platform" },
28842
+ { x: 420, y: 220, width: 160, height: 16, type: "platform" },
28843
+ { x: 620, y: 300, width: 140, height: 16, type: "platform" }
28844
+ ],
28622
28845
  worldWidth = 800,
28623
28846
  worldHeight = 400,
28624
28847
  canvasWidth = 800,
28625
28848
  canvasHeight = 400,
28626
28849
  followCamera = true,
28627
- bgColor,
28850
+ bgColor = "#5c94fc",
28628
28851
  playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
28629
28852
  tileSprites,
28630
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
28853
+ backgroundImage = "",
28631
28854
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
28632
28855
  leftEvent = "MOVE_LEFT",
28633
28856
  rightEvent = "MOVE_RIGHT",
@@ -28675,10 +28898,10 @@ function PlatformerCanvas({
28675
28898
  };
28676
28899
  }, []);
28677
28900
  const resolvedPlayer = player ?? {
28678
- x: 50,
28679
- y: 300,
28680
- width: 24,
28681
- height: 32,
28901
+ x: 80,
28902
+ y: 336,
28903
+ width: 32,
28904
+ height: 48,
28682
28905
  facingRight: true
28683
28906
  };
28684
28907
  const handleKeyDown = React77.useCallback((e) => {
@@ -39388,8 +39611,8 @@ var init_DetailPanel = __esm({
39388
39611
  }
39389
39612
  });
39390
39613
  function DialogueBubble({
39391
- speaker,
39392
- text,
39614
+ speaker = "Hero",
39615
+ text = "The dungeon awaits. Choose your path wisely.",
39393
39616
  portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
39394
39617
  position = "bottom",
39395
39618
  className
@@ -39471,7 +39694,7 @@ var init_DrawerSlot = __esm({
39471
39694
  }
39472
39695
  });
39473
39696
  function StateIndicator({
39474
- state,
39697
+ state = "idle",
39475
39698
  label,
39476
39699
  size = "md",
39477
39700
  animated = true,
@@ -42684,13 +42907,13 @@ var init_MediaGallery = __esm({
42684
42907
  }
42685
42908
  });
42686
42909
  function MiniMap({
42687
- tiles = [],
42688
- units = [],
42910
+ tiles = DEFAULT_TILES,
42911
+ units = DEFAULT_UNITS,
42689
42912
  width = 150,
42690
42913
  height = 150,
42691
42914
  mapWidth = 100,
42692
42915
  mapHeight = 100,
42693
- viewportRect,
42916
+ viewportRect = DEFAULT_VIEWPORT,
42694
42917
  className
42695
42918
  }) {
42696
42919
  const canvasRef = React77__namespace.useRef(null);
@@ -42769,10 +42992,25 @@ function MiniMap({
42769
42992
  }
42770
42993
  );
42771
42994
  }
42995
+ var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
42772
42996
  var init_MiniMap = __esm({
42773
42997
  "components/game/atoms/MiniMap.tsx"() {
42774
42998
  "use client";
42775
42999
  init_cn();
43000
+ DEFAULT_TILES = [
43001
+ { x: 10, y: 10, color: "#4ade80" },
43002
+ { x: 20, y: 15, color: "#4ade80" },
43003
+ { x: 30, y: 25, color: "#22c55e" },
43004
+ { x: 50, y: 40, color: "#4ade80" },
43005
+ { x: 60, y: 55, color: "#16a34a" },
43006
+ { x: 40, y: 60, color: "#4ade80" },
43007
+ { x: 70, y: 30, color: "#22c55e" },
43008
+ { x: 80, y: 70, color: "#4ade80" }
43009
+ ];
43010
+ DEFAULT_UNITS = [
43011
+ { x: 30, y: 30, color: "#60a5fa", isPlayer: true }
43012
+ ];
43013
+ DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
42776
43014
  MiniMap.displayName = "MiniMap";
42777
43015
  }
42778
43016
  });
@@ -43124,8 +43362,8 @@ var init_PricingPageTemplate = __esm({
43124
43362
  });
43125
43363
  function ResourceCounter({
43126
43364
  icon,
43127
- label,
43128
- value,
43365
+ label = "Gold",
43366
+ value = 250,
43129
43367
  max,
43130
43368
  color,
43131
43369
  size = "md",
@@ -46138,11 +46376,11 @@ var init_SplitPane = __esm({
46138
46376
  });
46139
46377
  function Sprite({
46140
46378
  spritesheet = "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
46141
- frameWidth,
46142
- frameHeight,
46143
- frame,
46144
- x,
46145
- y,
46379
+ frameWidth = 64,
46380
+ frameHeight = 64,
46381
+ frame = 0,
46382
+ x = 0,
46383
+ y = 0,
46146
46384
  scale = 1,
46147
46385
  flipX = false,
46148
46386
  flipY = false,
@@ -47043,11 +47281,11 @@ function formatDuration(seconds) {
47043
47281
  return `${Math.round(seconds)}s`;
47044
47282
  }
47045
47283
  function StatusEffect({
47046
- icon,
47047
- label,
47048
- duration,
47284
+ icon = "shield",
47285
+ label = "Shield",
47286
+ duration = 30,
47049
47287
  stacks,
47050
- variant = "neutral",
47288
+ variant = "buff",
47051
47289
  size = "md",
47052
47290
  className
47053
47291
  }) {
@@ -47500,8 +47738,8 @@ function formatTime3(seconds, format) {
47500
47738
  return `${mins.toString().padStart(2, "0")}:${padded}`;
47501
47739
  }
47502
47740
  function TimerDisplay({
47503
- seconds,
47504
- running,
47741
+ seconds = 90,
47742
+ running = true,
47505
47743
  format = "mm:ss",
47506
47744
  size = "md",
47507
47745
  className,
@@ -48074,12 +48312,12 @@ function WorldMapTemplate({
48074
48312
  entity,
48075
48313
  scale = 0.4,
48076
48314
  unitScale = 2.5,
48077
- diamondTopY,
48315
+ diamondTopY = 374,
48078
48316
  allowMoveAllHeroes = false,
48079
- tiles,
48080
- units,
48081
- features,
48082
- assetManifest,
48317
+ tiles = DEFAULT_WORLDMAP_TILES,
48318
+ units = DEFAULT_WORLDMAP_UNITS,
48319
+ features = DEFAULT_WORLDMAP_FEATURES,
48320
+ assetManifest = DEFAULT_WORLDMAP_MANIFEST,
48083
48321
  className
48084
48322
  }) {
48085
48323
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -48102,17 +48340,71 @@ function WorldMapTemplate({
48102
48340
  }
48103
48341
  );
48104
48342
  }
48343
+ var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
48105
48344
  var init_WorldMapTemplate = __esm({
48106
48345
  "components/game/templates/WorldMapTemplate.tsx"() {
48107
48346
  init_WorldMapBoard();
48347
+ CDN3 = "https://almadar-kflow-assets.web.app/shared";
48348
+ DEFAULT_WORLDMAP_TILES = [
48349
+ { x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48350
+ { x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48351
+ { x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48352
+ { x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48353
+ { x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48354
+ { x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48355
+ { x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48356
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48357
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48358
+ { x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48359
+ { x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48360
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48361
+ { x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
48362
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48363
+ { x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48364
+ { x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48365
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48366
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48367
+ { x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
48368
+ { x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48369
+ { x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48370
+ { x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48371
+ { x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48372
+ { x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48373
+ { x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
48374
+ ];
48375
+ DEFAULT_WORLDMAP_UNITS = [
48376
+ { id: "h1", position: { x: 1, y: 1 }, unitType: "hero", name: "Amir", team: "player", health: 10, maxHealth: 10, sprite: `${CDN3}/sprite-sheets/amir-sprite-sheet-se.png` },
48377
+ { id: "h2", position: { x: 3, y: 3 }, unitType: "scout", name: "Archivist", team: "player", health: 10, maxHealth: 10, sprite: `${CDN3}/sprite-sheets/archivist-sprite-sheet-se.png` }
48378
+ ];
48379
+ DEFAULT_WORLDMAP_FEATURES = [
48380
+ { id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
48381
+ { id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
48382
+ ];
48383
+ DEFAULT_WORLDMAP_MANIFEST = {
48384
+ baseUrl: CDN3,
48385
+ terrains: {
48386
+ grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
48387
+ water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
48388
+ mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
48389
+ road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
48390
+ },
48391
+ units: {
48392
+ hero: "/sprite-sheets/amir-sprite-sheet-se.png",
48393
+ scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
48394
+ },
48395
+ features: {
48396
+ capital: "/scenes/world/capital.png",
48397
+ power_node: "/world-map/power_node.png"
48398
+ }
48399
+ };
48108
48400
  WorldMapTemplate.displayName = "WorldMapTemplate";
48109
48401
  }
48110
48402
  });
48111
48403
  function XPBar({
48112
- current,
48113
- max,
48114
- level,
48115
- showLabel = false,
48404
+ current = 350,
48405
+ max = 1e3,
48406
+ level = 5,
48407
+ showLabel = true,
48116
48408
  size = "md",
48117
48409
  animated = true,
48118
48410
  className