@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.
@@ -8179,7 +8179,7 @@ var init_Accordion = __esm({
8179
8179
  }
8180
8180
  });
8181
8181
  function ActionButton({
8182
- label,
8182
+ label = "Attack",
8183
8183
  icon,
8184
8184
  cooldown = 0,
8185
8185
  disabled = false,
@@ -8366,7 +8366,7 @@ var init_ControlButton = __esm({
8366
8366
  }
8367
8367
  });
8368
8368
  function ActionButtons({
8369
- buttons,
8369
+ buttons = DEFAULT_BUTTONS,
8370
8370
  onAction,
8371
8371
  actionEvent,
8372
8372
  layout = "horizontal",
@@ -8473,7 +8473,7 @@ function ActionButtons({
8473
8473
  button.id
8474
8474
  )) });
8475
8475
  }
8476
- var sizeMap3, layoutMap;
8476
+ var sizeMap3, layoutMap, DEFAULT_BUTTONS;
8477
8477
  var init_ActionButtons = __esm({
8478
8478
  "components/game/molecules/ActionButtons.tsx"() {
8479
8479
  "use client";
@@ -8490,6 +8490,11 @@ var init_ActionButtons = __esm({
8490
8490
  vertical: "flex flex-col gap-2",
8491
8491
  diamond: "grid grid-cols-3 gap-1"
8492
8492
  };
8493
+ DEFAULT_BUTTONS = [
8494
+ { id: "jump", label: "Jump", icon: "chevron-up", variant: "primary" },
8495
+ { id: "attack", label: "Attack", icon: "sword", variant: "secondary" },
8496
+ { id: "dodge", label: "Dodge", icon: "wind", variant: "ghost" }
8497
+ ];
8493
8498
  ActionButtons.displayName = "ActionButtons";
8494
8499
  }
8495
8500
  });
@@ -9580,7 +9585,7 @@ function IsometricCanvas({
9580
9585
  // Rendering options
9581
9586
  scale = 0.4,
9582
9587
  debug: debug2 = false,
9583
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
9588
+ backgroundImage = "",
9584
9589
  showMinimap = true,
9585
9590
  enableCamera = true,
9586
9591
  unitScale = 1,
@@ -10719,10 +10724,10 @@ function BattleTemplate({
10719
10724
  entity,
10720
10725
  scale = 0.45,
10721
10726
  unitScale = 1,
10722
- tiles,
10723
- units,
10724
- features,
10725
- assetManifest,
10727
+ tiles = DEFAULT_BATTLE_TILES,
10728
+ units = DEFAULT_BATTLE_UNITS,
10729
+ features = DEFAULT_BATTLE_FEATURES,
10730
+ assetManifest = DEFAULT_BATTLE_MANIFEST,
10726
10731
  className
10727
10732
  }) {
10728
10733
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -10748,9 +10753,62 @@ function BattleTemplate({
10748
10753
  }
10749
10754
  );
10750
10755
  }
10756
+ var CDN, DEFAULT_BATTLE_TILES, DEFAULT_BATTLE_UNITS, DEFAULT_BATTLE_FEATURES, DEFAULT_BATTLE_MANIFEST;
10751
10757
  var init_BattleTemplate = __esm({
10752
10758
  "components/game/templates/BattleTemplate.tsx"() {
10753
10759
  init_BattleBoard();
10760
+ CDN = "https://almadar-kflow-assets.web.app/shared";
10761
+ DEFAULT_BATTLE_TILES = [
10762
+ { x: 0, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10763
+ { x: 1, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10764
+ { x: 2, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10765
+ { x: 3, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10766
+ { x: 4, y: 0, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10767
+ { x: 0, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10768
+ { x: 1, y: 1, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10769
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10770
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10771
+ { x: 4, y: 1, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10772
+ { x: 0, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10773
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10774
+ { x: 2, y: 2, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10775
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10776
+ { x: 4, y: 2, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10777
+ { x: 0, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10778
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10779
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png` },
10780
+ { x: 3, y: 3, terrain: "dirt", passable: true, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png` },
10781
+ { x: 4, y: 3, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10782
+ { x: 0, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10783
+ { x: 1, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10784
+ { x: 2, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10785
+ { x: 3, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` },
10786
+ { x: 4, y: 4, terrain: "stone", passable: false, terrainSprite: `${CDN}/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png` }
10787
+ ];
10788
+ DEFAULT_BATTLE_UNITS = [
10789
+ { 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` },
10790
+ { 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` }
10791
+ ];
10792
+ DEFAULT_BATTLE_FEATURES = [
10793
+ { id: "f1", x: 2, y: 2, type: "gold_mine", sprite: `${CDN}/world-map/gold_mine.png` },
10794
+ { id: "f2", x: 3, y: 1, type: "portal", sprite: `${CDN}/world-map/portal_open.png` }
10795
+ ];
10796
+ DEFAULT_BATTLE_MANIFEST = {
10797
+ baseUrl: CDN,
10798
+ terrains: {
10799
+ stone: "/isometric-blocks/PNG/Abstract tiles/abstractTile_07.png",
10800
+ dirt: "/isometric-blocks/PNG/Abstract tiles/abstractTile_01.png",
10801
+ grass: "/isometric-blocks/PNG/Abstract tiles/abstractTile_13.png"
10802
+ },
10803
+ units: {
10804
+ worker: "/sprite-sheets/amir-sprite-sheet-se.png",
10805
+ guardian: "/sprite-sheets/destroyer-sprite-sheet-sw.png"
10806
+ },
10807
+ features: {
10808
+ gold_mine: "/world-map/gold_mine.png",
10809
+ portal: "/world-map/portal_open.png"
10810
+ }
10811
+ };
10754
10812
  BattleTemplate.displayName = "BattleTemplate";
10755
10813
  }
10756
10814
  });
@@ -18750,10 +18808,10 @@ var init_CastleBoard = __esm({
18750
18808
  function CastleTemplate({
18751
18809
  entity,
18752
18810
  scale = 0.45,
18753
- tiles,
18754
- units,
18755
- features,
18756
- assetManifest,
18811
+ tiles = DEFAULT_CASTLE_TILES,
18812
+ units = DEFAULT_CASTLE_UNITS,
18813
+ features = DEFAULT_CASTLE_FEATURES,
18814
+ assetManifest = DEFAULT_CASTLE_MANIFEST,
18757
18815
  className
18758
18816
  }) {
18759
18817
  const resolved = entity && typeof entity === "object" && !Array.isArray(entity) ? entity : void 0;
@@ -18774,9 +18832,61 @@ function CastleTemplate({
18774
18832
  }
18775
18833
  );
18776
18834
  }
18835
+ var CDN2, DEFAULT_CASTLE_TILES, DEFAULT_CASTLE_UNITS, DEFAULT_CASTLE_FEATURES, DEFAULT_CASTLE_MANIFEST;
18777
18836
  var init_CastleTemplate = __esm({
18778
18837
  "components/game/templates/CastleTemplate.tsx"() {
18779
18838
  init_CastleBoard();
18839
+ CDN2 = "https://almadar-kflow-assets.web.app/shared";
18840
+ DEFAULT_CASTLE_TILES = [
18841
+ { x: 0, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18842
+ { x: 1, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18843
+ { x: 2, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18844
+ { x: 3, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18845
+ { x: 4, y: 0, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18846
+ { x: 0, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18847
+ { x: 1, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18848
+ { x: 2, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18849
+ { x: 3, y: 1, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18850
+ { x: 4, y: 1, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18851
+ { x: 0, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18852
+ { x: 1, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18853
+ { x: 2, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_09.png` },
18854
+ { x: 3, y: 2, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18855
+ { x: 4, y: 2, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18856
+ { x: 0, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18857
+ { x: 1, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18858
+ { x: 2, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18859
+ { x: 3, y: 3, terrain: "floor", passable: true, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
18860
+ { x: 4, y: 3, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18861
+ { x: 0, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18862
+ { x: 1, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18863
+ { x: 2, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18864
+ { x: 3, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` },
18865
+ { x: 4, y: 4, terrain: "wall", passable: false, terrainSprite: `${CDN2}/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png` }
18866
+ ];
18867
+ DEFAULT_CASTLE_UNITS = [
18868
+ { 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` },
18869
+ { 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` }
18870
+ ];
18871
+ DEFAULT_CASTLE_FEATURES = [
18872
+ { id: "f1", x: 2, y: 2, type: "chest", sprite: `${CDN2}/world-map/treasure_chest_closed.png` },
18873
+ { id: "f2", x: 3, y: 1, type: "crystal", sprite: `${CDN2}/world-map/resonance_crystal.png` }
18874
+ ];
18875
+ DEFAULT_CASTLE_MANIFEST = {
18876
+ baseUrl: CDN2,
18877
+ terrains: {
18878
+ wall: "/isometric-blocks/PNG/Platformer tiles/platformerTile_05.png",
18879
+ floor: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png"
18880
+ },
18881
+ units: {
18882
+ worker: "/sprite-sheets/coordinator-sprite-sheet-se.png",
18883
+ guardian: "/sprite-sheets/forger-sprite-sheet-se.png"
18884
+ },
18885
+ features: {
18886
+ chest: "/world-map/treasure_chest_closed.png",
18887
+ crystal: "/world-map/resonance_crystal.png"
18888
+ }
18889
+ };
18780
18890
  CastleTemplate.displayName = "CastleTemplate";
18781
18891
  }
18782
18892
  });
@@ -19555,7 +19665,7 @@ var init_ChartLegend = __esm({
19555
19665
  }
19556
19666
  });
19557
19667
  function ChoiceButton({
19558
- text,
19668
+ text = "Charge forward into the fray",
19559
19669
  index,
19560
19670
  disabled = false,
19561
19671
  selected = false,
@@ -19944,7 +20054,7 @@ var init_CodeRunnerPanel = __esm({
19944
20054
  }
19945
20055
  });
19946
20056
  function CombatLog({
19947
- events: events2,
20057
+ events: events2 = DEFAULT_COMBAT_EVENTS,
19948
20058
  maxVisible = 50,
19949
20059
  autoScroll = true,
19950
20060
  showTimestamps = false,
@@ -19995,7 +20105,7 @@ function CombatLog({
19995
20105
  }) }) })
19996
20106
  ] });
19997
20107
  }
19998
- var eventIcons, eventColors, eventBadgeVariants;
20108
+ var eventIcons, eventColors, eventBadgeVariants, DEFAULT_COMBAT_EVENTS;
19999
20109
  var init_CombatLog = __esm({
20000
20110
  "components/game/molecules/CombatLog.tsx"() {
20001
20111
  init_atoms2();
@@ -20027,6 +20137,13 @@ var init_CombatLog = __esm({
20027
20137
  death: "secondary",
20028
20138
  spawn: "secondary"
20029
20139
  };
20140
+ DEFAULT_COMBAT_EVENTS = [
20141
+ { id: "e1", type: "spawn", message: "Shadow Guard entered the field.", timestamp: 0, turn: 1 },
20142
+ { id: "e2", type: "move", message: "Hero moved to (3, 4).", timestamp: 1, actorName: "Hero", turn: 1 },
20143
+ { id: "e3", type: "attack", message: "Hero attacked Shadow Guard.", timestamp: 2, actorName: "Hero", targetName: "Shadow Guard", value: 18, turn: 2 },
20144
+ { id: "e4", type: "defend", message: "Shadow Guard blocked 5 damage.", timestamp: 3, actorName: "Shadow Guard", value: 5, turn: 2 },
20145
+ { id: "e5", type: "heal", message: "Hero used Health Potion.", timestamp: 4, actorName: "Hero", value: 25, turn: 3 }
20146
+ ];
20030
20147
  CombatLog.displayName = "CombatLog";
20031
20148
  }
20032
20149
  });
@@ -20042,7 +20159,7 @@ function getComboScale(combo) {
20042
20159
  return "";
20043
20160
  }
20044
20161
  function ComboCounter({
20045
- combo,
20162
+ combo = 5,
20046
20163
  multiplier,
20047
20164
  streak,
20048
20165
  size = "md",
@@ -20487,10 +20604,11 @@ var init_CounterTemplate = __esm({
20487
20604
  }
20488
20605
  });
20489
20606
  function ItemSlot({
20490
- icon,
20491
- label,
20607
+ assetUrl = DEFAULT_ASSET_URL,
20608
+ icon = "sword",
20609
+ label = "Iron Sword",
20492
20610
  quantity,
20493
- rarity = "common",
20611
+ rarity = "uncommon",
20494
20612
  empty,
20495
20613
  size = "md",
20496
20614
  selected,
@@ -20498,6 +20616,7 @@ function ItemSlot({
20498
20616
  className
20499
20617
  }) {
20500
20618
  const isClickable = onClick != null;
20619
+ const px = assetSizeMap[size];
20501
20620
  return /* @__PURE__ */ jsx(
20502
20621
  "button",
20503
20622
  {
@@ -20518,7 +20637,17 @@ function ItemSlot({
20518
20637
  className
20519
20638
  ),
20520
20639
  children: empty ? /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-base", children: "+" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
20521
- icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }),
20640
+ assetUrl ? /* @__PURE__ */ jsx(
20641
+ "img",
20642
+ {
20643
+ src: assetUrl,
20644
+ alt: label,
20645
+ width: px,
20646
+ height: px,
20647
+ style: { imageRendering: "pixelated", objectFit: "contain" },
20648
+ className: "flex-shrink-0"
20649
+ }
20650
+ ) : icon ? /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon }) : /* @__PURE__ */ jsx(Icon, { icon }) }) : null,
20522
20651
  quantity != null && quantity > 1 && /* @__PURE__ */ jsx(
20523
20652
  "span",
20524
20653
  {
@@ -20534,7 +20663,7 @@ function ItemSlot({
20534
20663
  }
20535
20664
  );
20536
20665
  }
20537
- var sizeMap5, rarityBorderMap, rarityGlowMap;
20666
+ var sizeMap5, rarityBorderMap, rarityGlowMap, DEFAULT_ASSET_URL, assetSizeMap;
20538
20667
  var init_ItemSlot = __esm({
20539
20668
  "components/game/atoms/ItemSlot.tsx"() {
20540
20669
  "use client";
@@ -20559,6 +20688,12 @@ var init_ItemSlot = __esm({
20559
20688
  epic: "shadow-lg",
20560
20689
  legendary: "shadow-lg"
20561
20690
  };
20691
+ DEFAULT_ASSET_URL = "https://almadar-kflow-assets.web.app/shared/isometric-dungeon/Isometric/chestClosed_E.png";
20692
+ assetSizeMap = {
20693
+ sm: 28,
20694
+ md: 40,
20695
+ lg: 56
20696
+ };
20562
20697
  ItemSlot.displayName = "ItemSlot";
20563
20698
  }
20564
20699
  });
@@ -20567,9 +20702,9 @@ function isValidRarity(value) {
20567
20702
  return rarityValues.includes(value);
20568
20703
  }
20569
20704
  function CraftingRecipe({
20570
- inputs,
20571
- output,
20572
- canCraft = false,
20705
+ inputs = DEFAULT_INPUTS,
20706
+ output = DEFAULT_OUTPUT,
20707
+ canCraft = true,
20573
20708
  onCraft,
20574
20709
  craftEvent,
20575
20710
  className
@@ -20630,7 +20765,7 @@ function CraftingRecipe({
20630
20765
  }
20631
20766
  );
20632
20767
  }
20633
- var rarityValues;
20768
+ var rarityValues, DEFAULT_INPUTS, DEFAULT_OUTPUT;
20634
20769
  var init_CraftingRecipe = __esm({
20635
20770
  "components/game/molecules/CraftingRecipe.tsx"() {
20636
20771
  "use client";
@@ -20642,6 +20777,15 @@ var init_CraftingRecipe = __esm({
20642
20777
  init_Stack();
20643
20778
  init_Icon();
20644
20779
  rarityValues = ["common", "uncommon", "rare", "epic", "legendary"];
20780
+ DEFAULT_INPUTS = [
20781
+ { icon: "gem", label: "Iron Ore", required: 2, available: 3 },
20782
+ { icon: "flame", label: "Coal", required: 1, available: 1 }
20783
+ ];
20784
+ DEFAULT_OUTPUT = {
20785
+ icon: "sword",
20786
+ label: "Iron Sword",
20787
+ rarity: "uncommon"
20788
+ };
20645
20789
  CraftingRecipe.displayName = "CraftingRecipe";
20646
20790
  }
20647
20791
  });
@@ -20723,7 +20867,7 @@ var init_DPad = __esm({
20723
20867
  }
20724
20868
  });
20725
20869
  function DamageNumber({
20726
- value,
20870
+ value = 42,
20727
20871
  type = "damage",
20728
20872
  size = "md",
20729
20873
  className
@@ -26800,8 +26944,8 @@ var init_ProgressDots = __esm({
26800
26944
  }
26801
26945
  });
26802
26946
  function HealthBar({
26803
- current,
26804
- max,
26947
+ current = 3,
26948
+ max = 5,
26805
26949
  format = "hearts",
26806
26950
  size = "md",
26807
26951
  className,
@@ -27021,10 +27165,10 @@ var init_StatBadge = __esm({
27021
27165
  }
27022
27166
  });
27023
27167
  function InventoryGrid({
27024
- items,
27168
+ items = DEFAULT_GRID_ITEMS,
27025
27169
  columns = 4,
27026
- totalSlots,
27027
- selectedId,
27170
+ totalSlots = 12,
27171
+ selectedId = "",
27028
27172
  onSelect,
27029
27173
  selectEvent,
27030
27174
  size = "md",
@@ -27073,7 +27217,7 @@ function InventoryGrid({
27073
27217
  }
27074
27218
  );
27075
27219
  }
27076
- var columnMap;
27220
+ var columnMap, DEFAULT_GRID_ITEMS;
27077
27221
  var init_InventoryGrid = __esm({
27078
27222
  "components/game/molecules/InventoryGrid.tsx"() {
27079
27223
  "use client";
@@ -27090,13 +27234,19 @@ var init_InventoryGrid = __esm({
27090
27234
  7: "grid-cols-7",
27091
27235
  8: "grid-cols-8"
27092
27236
  };
27237
+ DEFAULT_GRID_ITEMS = [
27238
+ { id: "grid-1", icon: "sword", label: "Iron Sword", quantity: 1, rarity: "common" },
27239
+ { id: "grid-2", icon: "flask-conical", label: "Health Potion", quantity: 3, rarity: "uncommon" },
27240
+ { id: "grid-3", icon: "shield", label: "Wooden Shield", quantity: 1, rarity: "common" },
27241
+ { id: "grid-4", icon: "gem", label: "Ruby Gem", quantity: 2, rarity: "rare" }
27242
+ ];
27093
27243
  InventoryGrid.displayName = "InventoryGrid";
27094
27244
  }
27095
27245
  });
27096
27246
  function WaypointMarker({
27097
27247
  label,
27098
27248
  icon,
27099
- active = false,
27249
+ active = true,
27100
27250
  completed = false,
27101
27251
  size = "md",
27102
27252
  className
@@ -27164,8 +27314,8 @@ var init_WaypointMarker = __esm({
27164
27314
  }
27165
27315
  });
27166
27316
  function QuestTracker({
27167
- quests,
27168
- activeQuestId,
27317
+ quests = DEFAULT_QUESTS,
27318
+ activeQuestId = "q2",
27169
27319
  className
27170
27320
  }) {
27171
27321
  return /* @__PURE__ */ jsx(VStack, { gap: "sm", className, children: quests.map((quest) => {
@@ -27231,6 +27381,7 @@ function QuestTracker({
27231
27381
  );
27232
27382
  }) });
27233
27383
  }
27384
+ var DEFAULT_QUESTS;
27234
27385
  var init_QuestTracker = __esm({
27235
27386
  "components/game/molecules/QuestTracker.tsx"() {
27236
27387
  "use client";
@@ -27240,6 +27391,11 @@ var init_QuestTracker = __esm({
27240
27391
  init_Typography();
27241
27392
  init_Box();
27242
27393
  init_Stack();
27394
+ DEFAULT_QUESTS = [
27395
+ { id: "q1", title: "Reach the Ancient Ruins", progress: 1, maxProgress: 1, completed: true },
27396
+ { id: "q2", title: "Defeat the Shadow Guard", progress: 2, maxProgress: 5, active: true },
27397
+ { id: "q3", title: "Collect 3 Crystal Shards", progress: 0, maxProgress: 3, active: false }
27398
+ ];
27243
27399
  QuestTracker.displayName = "QuestTracker";
27244
27400
  }
27245
27401
  });
@@ -27252,7 +27408,7 @@ function formatTime(seconds) {
27252
27408
  return `${seconds}s`;
27253
27409
  }
27254
27410
  function PowerupSlots({
27255
- active,
27411
+ active = DEFAULT_ACTIVE_POWERUPS,
27256
27412
  maxSlots = 4,
27257
27413
  className
27258
27414
  }) {
@@ -27297,6 +27453,7 @@ function PowerupSlots({
27297
27453
  ))
27298
27454
  ] });
27299
27455
  }
27456
+ var DEFAULT_ACTIVE_POWERUPS;
27300
27457
  var init_PowerupSlots = __esm({
27301
27458
  "components/game/molecules/PowerupSlots.tsx"() {
27302
27459
  "use client";
@@ -27305,6 +27462,10 @@ var init_PowerupSlots = __esm({
27305
27462
  init_Box();
27306
27463
  init_Stack();
27307
27464
  init_Typography();
27465
+ DEFAULT_ACTIVE_POWERUPS = [
27466
+ { id: "pw1", icon: "zap", label: "Speed Boost", remainingTime: 12 },
27467
+ { id: "pw2", icon: "shield", label: "Iron Shield", remainingTime: 30 }
27468
+ ];
27308
27469
  PowerupSlots.displayName = "PowerupSlots";
27309
27470
  }
27310
27471
  });
@@ -27316,7 +27477,7 @@ function GameCanvas2D({
27316
27477
  tickEvent,
27317
27478
  drawEvent,
27318
27479
  fps = 60,
27319
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
27480
+ backgroundImage = "",
27320
27481
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/",
27321
27482
  className
27322
27483
  }) {
@@ -27420,10 +27581,10 @@ var init_GameCanvas2D = __esm({
27420
27581
  }
27421
27582
  });
27422
27583
  function HealthPanel({
27423
- current,
27424
- max,
27425
- shield,
27426
- label,
27584
+ current = 75,
27585
+ max = 100,
27586
+ shield = 20,
27587
+ label = "Player HP",
27427
27588
  effects,
27428
27589
  showNumbers = true,
27429
27590
  size = "md",
@@ -27541,11 +27702,11 @@ var init_HealthPanel = __esm({
27541
27702
  }
27542
27703
  });
27543
27704
  function ScoreBoard({
27544
- score: rawScore,
27545
- highScore: rawHighScore,
27546
- combo: rawCombo,
27547
- multiplier: rawMultiplier,
27548
- level: rawLevel,
27705
+ score: rawScore = 4200,
27706
+ highScore: rawHighScore = 8750,
27707
+ combo: rawCombo = 3,
27708
+ multiplier: rawMultiplier = 2,
27709
+ level: rawLevel = 4,
27549
27710
  className
27550
27711
  }) {
27551
27712
  const score = rawScore ?? 0;
@@ -27618,7 +27779,7 @@ var init_ScoreBoard = __esm({
27618
27779
  }
27619
27780
  });
27620
27781
  function ResourceBar({
27621
- resources,
27782
+ resources = DEFAULT_RESOURCES,
27622
27783
  size = "md",
27623
27784
  className
27624
27785
  }) {
@@ -27644,17 +27805,23 @@ function ResourceBar({
27644
27805
  }
27645
27806
  );
27646
27807
  }
27808
+ var DEFAULT_RESOURCES;
27647
27809
  var init_ResourceBar = __esm({
27648
27810
  "components/game/molecules/ResourceBar.tsx"() {
27649
27811
  "use client";
27650
27812
  init_cn();
27651
27813
  init_StatBadge();
27652
27814
  init_Box();
27815
+ DEFAULT_RESOURCES = [
27816
+ { icon: "coins", label: "Gold", value: 320 },
27817
+ { icon: "zap", label: "Energy", value: 7, max: 10 },
27818
+ { icon: "gem", label: "Crystals", value: 15 }
27819
+ ];
27653
27820
  ResourceBar.displayName = "ResourceBar";
27654
27821
  }
27655
27822
  });
27656
27823
  function TurnIndicator({
27657
- currentTurn,
27824
+ currentTurn = 1,
27658
27825
  maxTurns,
27659
27826
  activeTeam,
27660
27827
  phase,
@@ -27706,11 +27873,11 @@ var init_TurnIndicator = __esm({
27706
27873
  }
27707
27874
  });
27708
27875
  function TurnPanel({
27709
- currentTurn,
27710
- maxTurns,
27711
- phase,
27712
- activeTeam,
27713
- actions,
27876
+ currentTurn = 3,
27877
+ maxTurns = 10,
27878
+ phase = "Attack",
27879
+ activeTeam = "Heroes",
27880
+ actions = DEFAULT_TURN_ACTIONS,
27714
27881
  className
27715
27882
  }) {
27716
27883
  const eventBus = useEventBus();
@@ -27755,6 +27922,7 @@ function TurnPanel({
27755
27922
  }
27756
27923
  );
27757
27924
  }
27925
+ var DEFAULT_TURN_ACTIONS;
27758
27926
  var init_TurnPanel = __esm({
27759
27927
  "components/game/molecules/TurnPanel.tsx"() {
27760
27928
  "use client";
@@ -27763,15 +27931,19 @@ var init_TurnPanel = __esm({
27763
27931
  init_Button();
27764
27932
  init_Box();
27765
27933
  init_useEventBus();
27934
+ DEFAULT_TURN_ACTIONS = [
27935
+ { label: "End Turn", icon: "skip-forward", event: "END_TURN" },
27936
+ { label: "Forfeit", icon: "flag", event: "FORFEIT", disabled: false }
27937
+ ];
27766
27938
  TurnPanel.displayName = "TurnPanel";
27767
27939
  }
27768
27940
  });
27769
27941
  function EnemyPlate({
27770
- name,
27771
- health,
27772
- maxHealth,
27773
- level,
27774
- effects,
27942
+ name = "Shadow Guard",
27943
+ health = 80,
27944
+ maxHealth = 100,
27945
+ level = 5,
27946
+ effects = DEFAULT_ENEMY_EFFECTS,
27775
27947
  className
27776
27948
  }) {
27777
27949
  return /* @__PURE__ */ jsxs(
@@ -27837,7 +28009,7 @@ function EnemyPlate({
27837
28009
  }
27838
28010
  );
27839
28011
  }
27840
- var effectVariantMap2;
28012
+ var effectVariantMap2, DEFAULT_ENEMY_EFFECTS;
27841
28013
  var init_EnemyPlate = __esm({
27842
28014
  "components/game/molecules/EnemyPlate.tsx"() {
27843
28015
  "use client";
@@ -27851,12 +28023,15 @@ var init_EnemyPlate = __esm({
27851
28023
  debuff: "danger",
27852
28024
  neutral: "neutral"
27853
28025
  };
28026
+ DEFAULT_ENEMY_EFFECTS = [
28027
+ { icon: "flame", label: "Burn", variant: "debuff" }
28028
+ ];
27854
28029
  EnemyPlate.displayName = "EnemyPlate";
27855
28030
  }
27856
28031
  });
27857
28032
  function UnitCommandBar({
27858
- commands,
27859
- selectedUnitId,
28033
+ commands = DEFAULT_COMMANDS,
28034
+ selectedUnitId = "unit-1",
27860
28035
  className
27861
28036
  }) {
27862
28037
  const eventBus = useEventBus();
@@ -27899,6 +28074,7 @@ function UnitCommandBar({
27899
28074
  }
27900
28075
  );
27901
28076
  }
28077
+ var DEFAULT_COMMANDS;
27902
28078
  var init_UnitCommandBar = __esm({
27903
28079
  "components/game/molecules/UnitCommandBar.tsx"() {
27904
28080
  "use client";
@@ -27907,6 +28083,12 @@ var init_UnitCommandBar = __esm({
27907
28083
  init_Box();
27908
28084
  init_Typography();
27909
28085
  init_useEventBus();
28086
+ DEFAULT_COMMANDS = [
28087
+ { label: "Move", icon: "move", event: "MOVE", hotkey: "M" },
28088
+ { label: "Attack", icon: "sword", event: "ATTACK", hotkey: "A" },
28089
+ { label: "Defend", icon: "shield", event: "DEFEND", hotkey: "D" },
28090
+ { label: "Wait", icon: "clock", event: "WAIT", hotkey: "W" }
28091
+ ];
27910
28092
  UnitCommandBar.displayName = "UnitCommandBar";
27911
28093
  }
27912
28094
  });
@@ -27940,7 +28122,7 @@ function GameHud({
27940
28122
  className,
27941
28123
  transparent = true
27942
28124
  }) {
27943
- const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : []);
28125
+ const rawStats = propStats ?? items ?? (elements && Array.isArray(elements) ? convertElementsToStats(elements) : DEFAULT_HUD_STATS);
27944
28126
  const stats = Array.isArray(rawStats) ? rawStats : [];
27945
28127
  const position = propPosition ?? "corners";
27946
28128
  if (position === "corners") {
@@ -27965,7 +28147,7 @@ function GameHud({
27965
28147
  }
27966
28148
  );
27967
28149
  }
27968
- var positionMap;
28150
+ var positionMap, DEFAULT_HUD_STATS;
27969
28151
  var init_GameHud = __esm({
27970
28152
  "components/game/molecules/GameHud.tsx"() {
27971
28153
  init_cn();
@@ -27975,11 +28157,17 @@ var init_GameHud = __esm({
27975
28157
  bottom: "bottom-0 left-0 right-0 flex justify-between items-end p-4",
27976
28158
  corners: "inset-0 pointer-events-none"
27977
28159
  };
28160
+ DEFAULT_HUD_STATS = [
28161
+ { label: "HP", value: 75, max: 100, format: "bar", variant: "danger" },
28162
+ { label: "MP", value: 40, max: 60, format: "bar", variant: "primary" },
28163
+ { label: "Score", value: 4200, format: "number", variant: "warning" },
28164
+ { label: "Level", value: 4, format: "number", variant: "default" }
28165
+ ];
27978
28166
  GameHud.displayName = "GameHud";
27979
28167
  }
27980
28168
  });
27981
28169
  function DialogueBox({
27982
- dialogue,
28170
+ dialogue = DEFAULT_DIALOGUE,
27983
28171
  typewriterSpeed = 30,
27984
28172
  position = "bottom",
27985
28173
  onComplete,
@@ -28162,17 +28350,27 @@ function DialogueBox({
28162
28350
  }
28163
28351
  );
28164
28352
  }
28353
+ var DEFAULT_DIALOGUE;
28165
28354
  var init_DialogueBox = __esm({
28166
28355
  "components/game/molecules/DialogueBox.tsx"() {
28167
28356
  "use client";
28168
28357
  init_cn();
28169
28358
  init_useEventBus();
28359
+ DEFAULT_DIALOGUE = {
28360
+ speaker: "Village Elder",
28361
+ text: "The ancient ruins hold great power \u2014 and great danger. Choose your path wisely, traveler.",
28362
+ choices: [
28363
+ { text: "I am ready. Lead the way.", action: "ACCEPT_QUEST" },
28364
+ { text: "Tell me more about the ruins.", action: "ASK_LORE" },
28365
+ { text: "Perhaps another time.", action: "DECLINE" }
28366
+ ]
28367
+ };
28170
28368
  }
28171
28369
  });
28172
28370
  function InventoryPanel({
28173
- items,
28174
- slots,
28175
- columns,
28371
+ items = DEFAULT_INVENTORY_ITEMS,
28372
+ slots = 12,
28373
+ columns = 4,
28176
28374
  selectedSlot,
28177
28375
  onSelectSlot,
28178
28376
  onUseItem,
@@ -28320,25 +28518,31 @@ function InventoryPanel({
28320
28518
  )
28321
28519
  ] });
28322
28520
  }
28521
+ var DEFAULT_INVENTORY_ITEMS;
28323
28522
  var init_InventoryPanel = __esm({
28324
28523
  "components/game/molecules/InventoryPanel.tsx"() {
28325
28524
  "use client";
28326
28525
  init_cn();
28327
28526
  init_useEventBus();
28527
+ DEFAULT_INVENTORY_ITEMS = [
28528
+ { id: "item-1", type: "weapon", name: "Iron Sword", quantity: 1, description: "A sturdy iron blade." },
28529
+ { id: "item-2", type: "potion", name: "Health Potion", quantity: 3, description: "Restores 50 HP." },
28530
+ { id: "item-3", type: "armor", name: "Leather Helm", quantity: 1, description: "Light head protection." }
28531
+ ];
28328
28532
  }
28329
28533
  });
28330
28534
  function GameMenu({
28331
- title,
28535
+ title = "Epic Quest",
28332
28536
  subtitle,
28333
28537
  options,
28334
28538
  menuItems,
28335
28539
  onSelect,
28336
28540
  eventBus: eventBusProp,
28337
28541
  background,
28338
- logo,
28542
+ logo = "",
28339
28543
  className
28340
28544
  }) {
28341
- const resolvedOptions = options ?? menuItems ?? [];
28545
+ const resolvedOptions = options ?? menuItems ?? DEFAULT_MENU_OPTIONS;
28342
28546
  let eventBusFromHook = null;
28343
28547
  try {
28344
28548
  eventBusFromHook = useEventBus();
@@ -28419,7 +28623,7 @@ function GameMenu({
28419
28623
  }
28420
28624
  );
28421
28625
  }
28422
- var variantMap3;
28626
+ var variantMap3, DEFAULT_MENU_OPTIONS;
28423
28627
  var init_GameMenu = __esm({
28424
28628
  "components/game/molecules/GameMenu.tsx"() {
28425
28629
  "use client";
@@ -28430,6 +28634,11 @@ var init_GameMenu = __esm({
28430
28634
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28431
28635
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28432
28636
  };
28637
+ DEFAULT_MENU_OPTIONS = [
28638
+ { label: "New Game", event: "NEW_GAME", variant: "primary" },
28639
+ { label: "Continue", event: "CONTINUE", variant: "secondary" },
28640
+ { label: "Settings", event: "SETTINGS", variant: "ghost" }
28641
+ ];
28433
28642
  GameMenu.displayName = "GameMenu";
28434
28643
  }
28435
28644
  });
@@ -28440,19 +28649,19 @@ function formatTime2(ms) {
28440
28649
  return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
28441
28650
  }
28442
28651
  function GameOverScreen({
28443
- title,
28652
+ title = "Game Over",
28444
28653
  message,
28445
- stats = [],
28654
+ stats = DEFAULT_GAME_OVER_STATS,
28446
28655
  actions,
28447
28656
  menuItems,
28448
28657
  onAction,
28449
28658
  eventBus: eventBusProp,
28450
- variant = "neutral",
28451
- highScore,
28452
- currentScore,
28659
+ variant = "defeat",
28660
+ highScore = 2e3,
28661
+ currentScore = 1240,
28453
28662
  className
28454
28663
  }) {
28455
- const resolvedActions = actions ?? menuItems ?? [];
28664
+ const resolvedActions = actions ?? menuItems ?? DEFAULT_GAME_OVER_ACTIONS;
28456
28665
  let eventBusFromHook = null;
28457
28666
  try {
28458
28667
  eventBusFromHook = useEventBus();
@@ -28539,7 +28748,7 @@ function GameOverScreen({
28539
28748
  }
28540
28749
  );
28541
28750
  }
28542
- var variantColors, buttonVariants;
28751
+ var variantColors, buttonVariants, DEFAULT_GAME_OVER_ACTIONS, DEFAULT_GAME_OVER_STATS;
28543
28752
  var init_GameOverScreen = __esm({
28544
28753
  "components/game/molecules/GameOverScreen.tsx"() {
28545
28754
  "use client";
@@ -28568,21 +28777,35 @@ var init_GameOverScreen = __esm({
28568
28777
  secondary: "bg-[var(--color-surface,#374151)] hover:bg-muted text-[var(--color-foreground)] border-muted",
28569
28778
  ghost: "bg-transparent hover:bg-foreground/10 text-[var(--color-foreground)] border-foreground/20"
28570
28779
  };
28780
+ DEFAULT_GAME_OVER_ACTIONS = [
28781
+ { label: "Play Again", event: "RESTART", variant: "primary" },
28782
+ { label: "Main Menu", event: "MAIN_MENU", variant: "secondary" }
28783
+ ];
28784
+ DEFAULT_GAME_OVER_STATS = [
28785
+ { label: "Score", value: 1240 },
28786
+ { label: "Enemies Defeated", value: 8 },
28787
+ { label: "Time", value: 93e3, format: "time" }
28788
+ ];
28571
28789
  GameOverScreen.displayName = "GameOverScreen";
28572
28790
  }
28573
28791
  });
28574
28792
  function PlatformerCanvas({
28575
28793
  player,
28576
- platforms = [],
28794
+ platforms = [
28795
+ { x: 0, y: 368, width: 800, height: 32, type: "ground" },
28796
+ { x: 150, y: 280, width: 160, height: 16, type: "platform" },
28797
+ { x: 420, y: 220, width: 160, height: 16, type: "platform" },
28798
+ { x: 620, y: 300, width: 140, height: 16, type: "platform" }
28799
+ ],
28577
28800
  worldWidth = 800,
28578
28801
  worldHeight = 400,
28579
28802
  canvasWidth = 800,
28580
28803
  canvasHeight = 400,
28581
28804
  followCamera = true,
28582
- bgColor,
28805
+ bgColor = "#5c94fc",
28583
28806
  playerSprite = "https://almadar-kflow-assets.web.app/shared/platformer/characters/platformChar_idle.png",
28584
28807
  tileSprites,
28585
- backgroundImage = "https://almadar-kflow-assets.web.app/shared/scenes/dark_clouds_from_above.png",
28808
+ backgroundImage = "",
28586
28809
  assetBaseUrl = "https://almadar-kflow-assets.web.app/shared/platformer/",
28587
28810
  leftEvent = "MOVE_LEFT",
28588
28811
  rightEvent = "MOVE_RIGHT",
@@ -28630,10 +28853,10 @@ function PlatformerCanvas({
28630
28853
  };
28631
28854
  }, []);
28632
28855
  const resolvedPlayer = player ?? {
28633
- x: 50,
28634
- y: 300,
28635
- width: 24,
28636
- height: 32,
28856
+ x: 80,
28857
+ y: 336,
28858
+ width: 32,
28859
+ height: 48,
28637
28860
  facingRight: true
28638
28861
  };
28639
28862
  const handleKeyDown = useCallback((e) => {
@@ -39343,8 +39566,8 @@ var init_DetailPanel = __esm({
39343
39566
  }
39344
39567
  });
39345
39568
  function DialogueBubble({
39346
- speaker,
39347
- text,
39569
+ speaker = "Hero",
39570
+ text = "The dungeon awaits. Choose your path wisely.",
39348
39571
  portrait = "https://almadar-kflow-assets.web.app/shared/characters/archetypes/04_hero.png",
39349
39572
  position = "bottom",
39350
39573
  className
@@ -39426,7 +39649,7 @@ var init_DrawerSlot = __esm({
39426
39649
  }
39427
39650
  });
39428
39651
  function StateIndicator({
39429
- state,
39652
+ state = "idle",
39430
39653
  label,
39431
39654
  size = "md",
39432
39655
  animated = true,
@@ -42639,13 +42862,13 @@ var init_MediaGallery = __esm({
42639
42862
  }
42640
42863
  });
42641
42864
  function MiniMap({
42642
- tiles = [],
42643
- units = [],
42865
+ tiles = DEFAULT_TILES,
42866
+ units = DEFAULT_UNITS,
42644
42867
  width = 150,
42645
42868
  height = 150,
42646
42869
  mapWidth = 100,
42647
42870
  mapHeight = 100,
42648
- viewportRect,
42871
+ viewportRect = DEFAULT_VIEWPORT,
42649
42872
  className
42650
42873
  }) {
42651
42874
  const canvasRef = React77.useRef(null);
@@ -42724,10 +42947,25 @@ function MiniMap({
42724
42947
  }
42725
42948
  );
42726
42949
  }
42950
+ var DEFAULT_TILES, DEFAULT_UNITS, DEFAULT_VIEWPORT;
42727
42951
  var init_MiniMap = __esm({
42728
42952
  "components/game/atoms/MiniMap.tsx"() {
42729
42953
  "use client";
42730
42954
  init_cn();
42955
+ DEFAULT_TILES = [
42956
+ { x: 10, y: 10, color: "#4ade80" },
42957
+ { x: 20, y: 15, color: "#4ade80" },
42958
+ { x: 30, y: 25, color: "#22c55e" },
42959
+ { x: 50, y: 40, color: "#4ade80" },
42960
+ { x: 60, y: 55, color: "#16a34a" },
42961
+ { x: 40, y: 60, color: "#4ade80" },
42962
+ { x: 70, y: 30, color: "#22c55e" },
42963
+ { x: 80, y: 70, color: "#4ade80" }
42964
+ ];
42965
+ DEFAULT_UNITS = [
42966
+ { x: 30, y: 30, color: "#60a5fa", isPlayer: true }
42967
+ ];
42968
+ DEFAULT_VIEWPORT = { x: 20, y: 20, w: 40, h: 40 };
42731
42969
  MiniMap.displayName = "MiniMap";
42732
42970
  }
42733
42971
  });
@@ -43079,8 +43317,8 @@ var init_PricingPageTemplate = __esm({
43079
43317
  });
43080
43318
  function ResourceCounter({
43081
43319
  icon,
43082
- label,
43083
- value,
43320
+ label = "Gold",
43321
+ value = 250,
43084
43322
  max,
43085
43323
  color,
43086
43324
  size = "md",
@@ -46093,11 +46331,11 @@ var init_SplitPane = __esm({
46093
46331
  });
46094
46332
  function Sprite({
46095
46333
  spritesheet = "https://almadar-kflow-assets.web.app/shared/isometric-blocks/Spritesheet/allTiles_sheet.png",
46096
- frameWidth,
46097
- frameHeight,
46098
- frame,
46099
- x,
46100
- y,
46334
+ frameWidth = 64,
46335
+ frameHeight = 64,
46336
+ frame = 0,
46337
+ x = 0,
46338
+ y = 0,
46101
46339
  scale = 1,
46102
46340
  flipX = false,
46103
46341
  flipY = false,
@@ -46998,11 +47236,11 @@ function formatDuration(seconds) {
46998
47236
  return `${Math.round(seconds)}s`;
46999
47237
  }
47000
47238
  function StatusEffect({
47001
- icon,
47002
- label,
47003
- duration,
47239
+ icon = "shield",
47240
+ label = "Shield",
47241
+ duration = 30,
47004
47242
  stacks,
47005
- variant = "neutral",
47243
+ variant = "buff",
47006
47244
  size = "md",
47007
47245
  className
47008
47246
  }) {
@@ -47455,8 +47693,8 @@ function formatTime3(seconds, format) {
47455
47693
  return `${mins.toString().padStart(2, "0")}:${padded}`;
47456
47694
  }
47457
47695
  function TimerDisplay({
47458
- seconds,
47459
- running,
47696
+ seconds = 90,
47697
+ running = true,
47460
47698
  format = "mm:ss",
47461
47699
  size = "md",
47462
47700
  className,
@@ -48029,12 +48267,12 @@ function WorldMapTemplate({
48029
48267
  entity,
48030
48268
  scale = 0.4,
48031
48269
  unitScale = 2.5,
48032
- diamondTopY,
48270
+ diamondTopY = 374,
48033
48271
  allowMoveAllHeroes = false,
48034
- tiles,
48035
- units,
48036
- features,
48037
- assetManifest,
48272
+ tiles = DEFAULT_WORLDMAP_TILES,
48273
+ units = DEFAULT_WORLDMAP_UNITS,
48274
+ features = DEFAULT_WORLDMAP_FEATURES,
48275
+ assetManifest = DEFAULT_WORLDMAP_MANIFEST,
48038
48276
  className
48039
48277
  }) {
48040
48278
  return /* @__PURE__ */ jsx(
@@ -48057,17 +48295,71 @@ function WorldMapTemplate({
48057
48295
  }
48058
48296
  );
48059
48297
  }
48298
+ var CDN3, DEFAULT_WORLDMAP_TILES, DEFAULT_WORLDMAP_UNITS, DEFAULT_WORLDMAP_FEATURES, DEFAULT_WORLDMAP_MANIFEST;
48060
48299
  var init_WorldMapTemplate = __esm({
48061
48300
  "components/game/templates/WorldMapTemplate.tsx"() {
48062
48301
  init_WorldMapBoard();
48302
+ CDN3 = "https://almadar-kflow-assets.web.app/shared";
48303
+ DEFAULT_WORLDMAP_TILES = [
48304
+ { x: 0, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48305
+ { x: 1, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48306
+ { x: 2, y: 0, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48307
+ { x: 3, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48308
+ { x: 4, y: 0, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48309
+ { x: 0, y: 1, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48310
+ { x: 1, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48311
+ { x: 2, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48312
+ { x: 3, y: 1, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48313
+ { x: 4, y: 1, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48314
+ { x: 0, y: 2, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48315
+ { x: 1, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48316
+ { x: 2, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
48317
+ { x: 3, y: 2, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48318
+ { x: 4, y: 2, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48319
+ { x: 0, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48320
+ { x: 1, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48321
+ { x: 2, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48322
+ { x: 3, y: 3, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png` },
48323
+ { x: 4, y: 3, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48324
+ { x: 0, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48325
+ { x: 1, y: 4, terrain: "water", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png` },
48326
+ { x: 2, y: 4, terrain: "grass", passable: true, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png` },
48327
+ { x: 3, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` },
48328
+ { x: 4, y: 4, terrain: "mountain", passable: false, terrainSprite: `${CDN3}/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png` }
48329
+ ];
48330
+ DEFAULT_WORLDMAP_UNITS = [
48331
+ { 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` },
48332
+ { 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` }
48333
+ ];
48334
+ DEFAULT_WORLDMAP_FEATURES = [
48335
+ { id: "f1", x: 2, y: 2, type: "capital", sprite: `${CDN3}/scenes/world/capital.png` },
48336
+ { id: "f2", x: 4, y: 2, type: "power_node", sprite: `${CDN3}/world-map/power_node.png` }
48337
+ ];
48338
+ DEFAULT_WORLDMAP_MANIFEST = {
48339
+ baseUrl: CDN3,
48340
+ terrains: {
48341
+ grass: "/isometric-blocks/PNG/Platformer tiles/platformerTile_01.png",
48342
+ water: "/isometric-blocks/PNG/Platformer tiles/platformerTile_11.png",
48343
+ mountain: "/isometric-blocks/PNG/Platformer tiles/platformerTile_13.png",
48344
+ road: "/isometric-blocks/PNG/Platformer tiles/platformerTile_03.png"
48345
+ },
48346
+ units: {
48347
+ hero: "/sprite-sheets/amir-sprite-sheet-se.png",
48348
+ scout: "/sprite-sheets/archivist-sprite-sheet-se.png"
48349
+ },
48350
+ features: {
48351
+ capital: "/scenes/world/capital.png",
48352
+ power_node: "/world-map/power_node.png"
48353
+ }
48354
+ };
48063
48355
  WorldMapTemplate.displayName = "WorldMapTemplate";
48064
48356
  }
48065
48357
  });
48066
48358
  function XPBar({
48067
- current,
48068
- max,
48069
- level,
48070
- showLabel = false,
48359
+ current = 350,
48360
+ max = 1e3,
48361
+ level = 5,
48362
+ showLabel = true,
48071
48363
  size = "md",
48072
48364
  animated = true,
48073
48365
  className