@almadar/ui 5.74.0 → 5.75.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.
Files changed (209) hide show
  1. package/dist/avl/index.cjs +42285 -42757
  2. package/dist/avl/index.css +0 -504
  3. package/dist/avl/index.js +42495 -42966
  4. package/dist/components/core/atoms/index.d.ts +1 -1
  5. package/dist/components/core/molecules/RepeatableFormSection.d.ts +6 -5
  6. package/dist/components/core/molecules/index.d.ts +1 -1
  7. package/dist/components/core/organisms/index.d.ts +1 -1
  8. package/dist/components/core/templates/index.d.ts +12 -12
  9. package/dist/components/game/{organisms/puzzles/sequencer → 2d}/ActionPalette.d.ts +1 -1
  10. package/dist/components/game/{organisms/puzzles/sequencer → 2d}/ActionTile.d.ts +2 -2
  11. package/dist/components/game/{organisms → 2d}/BattleBoard.d.ts +2 -2
  12. package/dist/components/game/{templates → 2d}/BattleTemplate.d.ts +3 -3
  13. package/dist/components/game/{organisms → 2d}/BoardgameBoard.d.ts +4 -4
  14. package/dist/components/game/{organisms/puzzles/builder → 2d}/BuilderBoard.d.ts +1 -1
  15. package/dist/components/game/2d/Canvas2D.d.ts +161 -0
  16. package/dist/components/game/{organisms → 2d}/CanvasEffect.d.ts +3 -3
  17. package/dist/components/game/{templates → 2d}/CardBattlerTemplate.d.ts +1 -1
  18. package/dist/components/game/{organisms → 2d}/CastleBoard.d.ts +1 -1
  19. package/dist/components/game/{templates → 2d}/CastleTemplate.d.ts +3 -3
  20. package/dist/components/game/{templates → 2d}/CityBuilderTemplate.d.ts +1 -1
  21. package/dist/components/game/{organisms/puzzles/classifier → 2d}/ClassifierBoard.d.ts +1 -1
  22. package/dist/components/game/2d/ControlGrid.d.ts +41 -0
  23. package/dist/components/game/{organisms/puzzles/debugger → 2d}/DebuggerBoard.d.ts +1 -1
  24. package/dist/components/game/{organisms/puzzles/event-handler → 2d}/EventHandlerBoard.d.ts +1 -1
  25. package/dist/components/game/{organisms → 2d}/FishingBoard.d.ts +1 -1
  26. package/dist/components/game/{organisms → 2d}/GameAudioProvider.d.ts +1 -1
  27. package/dist/components/game/2d/GameCard.d.ts +26 -0
  28. package/dist/components/game/2d/HealthBar.d.ts +26 -0
  29. package/dist/components/game/{organisms → 2d}/HexStrategyBoard.d.ts +4 -4
  30. package/dist/components/game/{organisms → 2d}/HolidayRunnerBoard.d.ts +4 -4
  31. package/dist/components/game/{molecules → 2d}/IsometricCanvas.d.ts +3 -3
  32. package/dist/components/game/{organisms → 2d}/MatchPuzzleBoard.d.ts +4 -4
  33. package/dist/components/game/{organisms → 2d}/MinigolfBoard.d.ts +4 -4
  34. package/dist/components/game/{organisms/puzzles/negotiator → 2d}/NegotiatorBoard.d.ts +1 -1
  35. package/dist/components/game/{organisms → 2d}/PinballBoard.d.ts +1 -1
  36. package/dist/components/game/{organisms → 2d}/PirateBoard.d.ts +4 -4
  37. package/dist/components/game/{organisms → 2d}/PlatformerBoard.d.ts +9 -14
  38. package/dist/components/game/{molecules → 2d}/PlatformerCanvas.d.ts +1 -1
  39. package/dist/components/game/{templates → 2d}/PlatformerTemplate.d.ts +1 -1
  40. package/dist/components/game/{organisms → 2d}/RacingBoard.d.ts +4 -4
  41. package/dist/components/game/{organisms → 2d}/RoguelikeBoard.d.ts +1 -1
  42. package/dist/components/game/{templates → 2d}/RoguelikeTemplate.d.ts +2 -2
  43. package/dist/components/game/{organisms/puzzles/sequencer → 2d}/SequenceBar.d.ts +1 -1
  44. package/dist/components/game/{organisms/puzzles/sequencer → 2d}/SequencerBoard.d.ts +1 -1
  45. package/dist/components/game/{organisms/physics-sim → 2d}/SimulationCanvas.d.ts +1 -1
  46. package/dist/components/game/{organisms/puzzles/simulator → 2d}/SimulatorBoard.d.ts +1 -1
  47. package/dist/components/game/{organisms → 2d}/SokobanBoard.d.ts +4 -4
  48. package/dist/components/game/{organisms → 2d}/SpaceShmupBoard.d.ts +4 -4
  49. package/dist/components/game/{organisms → 2d}/SpaceStationBoard.d.ts +4 -4
  50. package/dist/components/game/{organisms → 2d}/SportsBoard.d.ts +4 -4
  51. package/dist/components/game/{atoms → 2d}/Sprite.d.ts +1 -1
  52. package/dist/components/game/{organisms/puzzles/state-architect → 2d}/StateArchitectBoard.d.ts +1 -1
  53. package/dist/components/game/{organisms/puzzles/state-architect → 2d}/StateNode.d.ts +1 -1
  54. package/dist/components/game/{organisms → 2d}/TanksBoard.d.ts +4 -4
  55. package/dist/components/game/{templates → 2d}/TopDownShooterTemplate.d.ts +1 -1
  56. package/dist/components/game/{templates → 2d}/TowerDefenseTemplate.d.ts +1 -1
  57. package/dist/components/game/{organisms → 2d}/TraitStateViewer.d.ts +1 -1
  58. package/dist/components/game/{organisms/puzzles/state-architect → 2d}/TransitionArrow.d.ts +1 -1
  59. package/dist/components/game/{organisms → 2d}/UncontrolledBattleBoard.d.ts +1 -1
  60. package/dist/components/game/{templates → 2d}/VisualNovelTemplate.d.ts +1 -1
  61. package/dist/components/game/{organisms → 2d}/WorldMapBoard.d.ts +2 -2
  62. package/dist/components/game/{templates → 2d}/WorldMapTemplate.d.ts +3 -3
  63. package/dist/components/game/{templates → 2d}/game3dAssetManifest.d.ts +1 -1
  64. package/dist/components/game/2d/index.d.ts +122 -0
  65. package/dist/components/game/{organisms/hooks → 2d}/useBattleState.d.ts +1 -1
  66. package/dist/components/game/{organisms/hooks → 2d}/useCamera.d.ts +1 -1
  67. package/dist/components/game/{organisms → 2d}/useCanvasEffects.d.ts +1 -1
  68. package/dist/components/game/{molecules → 2d}/useUnitSpriteAtlas.d.ts +2 -2
  69. package/dist/components/game/3d/Canvas3D.d.ts +45 -0
  70. package/dist/components/game/{molecules/three/renderers → 3d}/FeatureRenderer.d.ts +1 -1
  71. package/dist/components/game/{molecules/three/renderers → 3d}/FeatureRenderer3D.d.ts +1 -1
  72. package/dist/components/game/{organisms → 3d}/GameBoard3D.d.ts +2 -2
  73. package/dist/components/game/{molecules → 3d}/GameCanvas3D.d.ts +3 -3
  74. package/dist/components/game/{templates → 3d}/GameCanvas3DBattleTemplate.d.ts +2 -2
  75. package/dist/components/game/{templates → 3d}/GameCanvas3DCastleTemplate.d.ts +2 -2
  76. package/dist/components/game/{templates → 3d}/GameCanvas3DWorldMapTemplate.d.ts +2 -2
  77. package/dist/components/game/{molecules/three/components → 3d}/PhysicsObject3D.d.ts +1 -1
  78. package/dist/components/game/{molecules/three/renderers → 3d}/TileRenderer.d.ts +1 -1
  79. package/dist/components/game/{molecules/three/renderers → 3d}/UnitRenderer.d.ts +3 -3
  80. package/dist/components/game/{molecules/three → 3d}/index.cjs +218 -301
  81. package/dist/components/game/{molecules/three → 3d}/index.css +3 -3
  82. package/dist/components/game/3d/index.d.ts +41 -0
  83. package/dist/components/game/{molecules/three → 3d}/index.js +29 -113
  84. package/dist/components/game/{molecules/three → 3d}/patterns.d.ts +5 -5
  85. package/dist/components/game/{molecules/three/hooks → 3d}/useAssetLoader.d.ts +1 -1
  86. package/dist/components/game/{molecules/three/hooks → 3d}/useGameCanvas3DEvents.d.ts +1 -1
  87. package/dist/components/game/{molecules/three/hooks → 3d}/useThree.d.ts +1 -1
  88. package/dist/components/game/{organisms/utils → shared}/canvasEffects.d.ts +1 -1
  89. package/dist/components/game/{organisms/utils → shared}/combatPresets.d.ts +1 -1
  90. package/dist/components/game/{organisms/types → shared}/game.d.ts +2 -2
  91. package/dist/components/game/shared/index.d.ts +23 -0
  92. package/dist/components/game/{organisms/types/isometric.d.ts → shared/isometricTypes.d.ts} +3 -7
  93. package/dist/components/game/{organisms/utils → shared}/spriteAnimation.d.ts +1 -1
  94. package/dist/components/game/{organisms/utils → shared}/spriteSheetConstants.d.ts +1 -1
  95. package/dist/components/index.cjs +24732 -25476
  96. package/dist/components/index.css +0 -504
  97. package/dist/components/index.js +24287 -25052
  98. package/dist/context/index.cjs +5 -7
  99. package/dist/context/index.js +5 -7
  100. package/dist/docs/index.cjs +108 -53
  101. package/dist/docs/index.css +0 -504
  102. package/dist/docs/index.js +108 -53
  103. package/dist/hooks/index.cjs +7 -9
  104. package/dist/hooks/index.js +7 -9
  105. package/dist/providers/index.cjs +43812 -44284
  106. package/dist/providers/index.css +0 -504
  107. package/dist/providers/index.js +43764 -44235
  108. package/dist/runtime/index.cjs +43783 -44255
  109. package/dist/runtime/index.css +0 -504
  110. package/dist/runtime/index.js +43642 -44113
  111. package/package.json +11 -11
  112. package/dist/components/game/atoms/HealthBar.d.ts +0 -18
  113. package/dist/components/game/atoms/XPBar.d.ts +0 -20
  114. package/dist/components/game/atoms/index.d.ts +0 -25
  115. package/dist/components/game/molecules/ActionButtons.d.ts +0 -38
  116. package/dist/components/game/molecules/DPad.d.ts +0 -26
  117. package/dist/components/game/molecules/index.d.ts +0 -32
  118. package/dist/components/game/molecules/three/components/index.d.ts +0 -10
  119. package/dist/components/game/molecules/three/index.d.ts +0 -35
  120. package/dist/components/game/molecules/three/renderers/index.d.ts +0 -11
  121. package/dist/components/game/organisms/editor/index.d.ts +0 -9
  122. package/dist/components/game/organisms/hooks/usePhysics2D.d.ts +0 -45
  123. package/dist/components/game/organisms/hooks/useSpriteAnimations.d.ts +0 -43
  124. package/dist/components/game/organisms/index.d.ts +0 -66
  125. package/dist/components/game/organisms/managers/PhysicsManager.d.ts +0 -103
  126. package/dist/components/game/organisms/physics-sim/index.d.ts +0 -7
  127. package/dist/components/game/organisms/puzzles/builder/index.d.ts +0 -2
  128. package/dist/components/game/organisms/puzzles/classifier/index.d.ts +0 -2
  129. package/dist/components/game/organisms/puzzles/debugger/index.d.ts +0 -2
  130. package/dist/components/game/organisms/puzzles/event-handler/index.d.ts +0 -8
  131. package/dist/components/game/organisms/puzzles/negotiator/index.d.ts +0 -2
  132. package/dist/components/game/organisms/puzzles/sequencer/index.d.ts +0 -8
  133. package/dist/components/game/organisms/puzzles/simulator/index.d.ts +0 -2
  134. package/dist/components/game/organisms/puzzles/state-architect/index.d.ts +0 -10
  135. package/dist/components/game/templates/index.d.ts +0 -4
  136. /package/dist/components/game/{atoms → 2d}/ActionButton.d.ts +0 -0
  137. /package/dist/components/game/{organisms → 2d}/CardBattlerBoard.d.ts +0 -0
  138. /package/dist/components/game/{molecules → 2d}/CardHand.d.ts +0 -0
  139. /package/dist/components/game/{atoms → 2d}/ChoiceButton.d.ts +0 -0
  140. /package/dist/components/game/{organisms → 2d}/CityBuilderBoard.d.ts +0 -0
  141. /package/dist/components/game/{molecules → 2d}/CombatLog.d.ts +0 -0
  142. /package/dist/components/game/{atoms → 2d}/ComboCounter.d.ts +0 -0
  143. /package/dist/components/game/{atoms → 2d}/ControlButton.d.ts +0 -0
  144. /package/dist/components/game/{molecules → 2d}/CraftingRecipe.d.ts +0 -0
  145. /package/dist/components/game/{atoms → 2d}/DamageNumber.d.ts +0 -0
  146. /package/dist/components/game/{molecules → 2d}/DialogueBox.d.ts +0 -0
  147. /package/dist/components/game/{atoms → 2d}/DialogueBubble.d.ts +0 -0
  148. /package/dist/components/game/{molecules → 2d}/EnemyPlate.d.ts +0 -0
  149. /package/dist/components/game/{organisms/puzzles/event-handler → 2d}/EventLog.d.ts +0 -0
  150. /package/dist/components/game/{organisms → 2d}/GameAudioToggle.d.ts +0 -0
  151. /package/dist/components/game/{molecules → 2d}/GameCanvas2D.d.ts +0 -0
  152. /package/dist/components/game/{molecules → 2d}/GameHud.d.ts +0 -0
  153. /package/dist/components/game/{molecules → 2d}/GameMenu.d.ts +0 -0
  154. /package/dist/components/game/{molecules → 2d}/GameOverScreen.d.ts +0 -0
  155. /package/dist/components/game/{templates → 2d}/GameShell.d.ts +0 -0
  156. /package/dist/components/game/{templates → 2d}/GameTemplate.d.ts +0 -0
  157. /package/dist/components/game/{molecules → 2d}/HealthPanel.d.ts +0 -0
  158. /package/dist/components/game/{molecules → 2d}/InventoryGrid.d.ts +0 -0
  159. /package/dist/components/game/{molecules → 2d}/InventoryPanel.d.ts +0 -0
  160. /package/dist/components/game/{atoms → 2d}/ItemSlot.d.ts +0 -0
  161. /package/dist/components/game/{atoms → 2d}/MiniMap.d.ts +0 -0
  162. /package/dist/components/game/{organisms/puzzles/event-handler → 2d}/ObjectRulePanel.d.ts +0 -0
  163. /package/dist/components/game/{molecules → 2d}/PowerupSlots.d.ts +0 -0
  164. /package/dist/components/game/{molecules → 2d}/QuestTracker.d.ts +0 -0
  165. /package/dist/components/game/{molecules → 2d}/ResourceBar.d.ts +0 -0
  166. /package/dist/components/game/{atoms → 2d}/ResourceCounter.d.ts +0 -0
  167. /package/dist/components/game/{organisms/puzzles/event-handler → 2d}/RuleEditor.d.ts +0 -0
  168. /package/dist/components/game/{molecules → 2d}/ScoreBoard.d.ts +0 -0
  169. /package/dist/components/game/{atoms → 2d}/ScoreDisplay.d.ts +0 -0
  170. /package/dist/components/game/{organisms/physics-sim → 2d}/SimulationControls.d.ts +0 -0
  171. /package/dist/components/game/{organisms/physics-sim → 2d}/SimulationGraph.d.ts +0 -0
  172. /package/dist/components/game/{molecules → 2d}/StatBadge.d.ts +0 -0
  173. /package/dist/components/game/{atoms → 2d}/StateIndicator.d.ts +0 -0
  174. /package/dist/components/game/{organisms/puzzles/state-architect → 2d}/StateJsonView.d.ts +0 -0
  175. /package/dist/components/game/{atoms → 2d}/StatusEffect.d.ts +0 -0
  176. /package/dist/components/game/{atoms → 2d}/TimerDisplay.d.ts +0 -0
  177. /package/dist/components/game/{organisms → 2d}/TopDownShooterBoard.d.ts +0 -0
  178. /package/dist/components/game/{organisms → 2d}/TowerDefenseBoard.d.ts +0 -0
  179. /package/dist/components/game/{organisms → 2d}/TraitSlot.d.ts +0 -0
  180. /package/dist/components/game/{atoms → 2d}/TurnIndicator.d.ts +0 -0
  181. /package/dist/components/game/{molecules → 2d}/TurnPanel.d.ts +0 -0
  182. /package/dist/components/game/{molecules → 2d}/UnitCommandBar.d.ts +0 -0
  183. /package/dist/components/game/{organisms/puzzles/state-architect → 2d}/VariablePanel.d.ts +0 -0
  184. /package/dist/components/game/{organisms → 2d}/VisualNovelBoard.d.ts +0 -0
  185. /package/dist/components/game/{atoms → 2d}/WaypointMarker.d.ts +0 -0
  186. /package/dist/components/game/{organisms/editor → 2d}/editorUtils.d.ts +0 -0
  187. /package/dist/components/game/{organisms/physics-sim/presets → 2d}/mechanics.d.ts +0 -0
  188. /package/dist/components/game/{organisms/physics-sim/presets/index.d.ts → 2d/physicsPresets.d.ts} +0 -0
  189. /package/dist/components/game/{organisms/puzzles/event-handler → 2d}/puzzleObject.d.ts +0 -0
  190. /package/dist/components/game/{organisms/physics-sim/presets → 2d}/types.d.ts +0 -0
  191. /package/dist/components/game/{organisms/hooks → 2d}/useGameAudio.d.ts +0 -0
  192. /package/dist/components/game/{molecules/three/loaders → 3d}/AssetLoader.d.ts +0 -0
  193. /package/dist/components/game/{molecules/three → 3d}/Camera3D.d.ts +0 -0
  194. /package/dist/components/game/{molecules/three/components → 3d}/Canvas3DErrorBoundary.d.ts +0 -0
  195. /package/dist/components/game/{molecules/three/components → 3d}/Canvas3DLoadingState.d.ts +0 -0
  196. /package/dist/components/game/{molecules/three → 3d}/Lighting3D.d.ts +0 -0
  197. /package/dist/components/game/{molecules/three/components → 3d}/ModelLoader.d.ts +0 -0
  198. /package/dist/components/game/{molecules/three → 3d}/Scene3D.d.ts +0 -0
  199. /package/dist/components/game/{molecules/three/utils → 3d}/culling.d.ts +0 -0
  200. /package/dist/components/game/{molecules/three/utils → 3d}/grid3D.d.ts +0 -0
  201. /package/dist/components/game/{molecules/three/hooks → 3d}/useRaycaster.d.ts +0 -0
  202. /package/dist/components/game/{molecules/three/hooks → 3d}/useSceneGraph.d.ts +0 -0
  203. /package/dist/components/game/{organisms → shared}/boardEntity.d.ts +0 -0
  204. /package/dist/components/game/{organisms/utils → shared}/combatEffects.d.ts +0 -0
  205. /package/dist/components/game/{organisms/types → shared}/effects.d.ts +0 -0
  206. /package/dist/components/game/{organisms/utils → shared}/isometric.d.ts +0 -0
  207. /package/dist/components/game/{organisms/utils → shared}/makeAsset.d.ts +0 -0
  208. /package/dist/components/game/{organisms/types/spriteAnimation.d.ts → shared/spriteAnimationTypes.d.ts} +0 -0
  209. /package/dist/components/game/{organisms/hooks → shared}/useImageCache.d.ts +0 -0
@@ -46,5 +46,5 @@ export { PatternTile, getTileDimensions, type PatternTileProps, type PatternVari
46
46
  export { AnimatedReveal, type AnimatedRevealProps, type RevealTrigger, type RevealAnimation } from "../../marketing/atoms/AnimatedReveal";
47
47
  export { AnimatedGraphic, type AnimatedGraphicProps, type GraphicAnimation } from "../../marketing/atoms/AnimatedGraphic";
48
48
  export { TraitFrame, type TraitFrameProps } from "./TraitFrame";
49
- export * from "../../game/atoms";
49
+ export * from "../../game/2d";
50
50
  export { type UiError, type LinkAction, type ImageSource, type Point, type Rect, } from "./types";
@@ -14,11 +14,12 @@ import React from "react";
14
14
  import type { JsonValue } from "@almadar/core";
15
15
  export type RepeatableItem = {
16
16
  id: string;
17
- /** State in which this item was added (for audit trails) */
18
- addedInState: string | null;
19
- /** Timestamp when item was added */
20
- addedAt: string | null;
21
- [key: string]: JsonValue;
17
+ /** State in which this item was added (for audit trails). Optional — only
18
+ * consumers using `trackAddedInState`/`showAuditInfo` populate it. */
19
+ addedInState?: string | null;
20
+ /** Timestamp when item was added. Optional — see `addedInState`. */
21
+ addedAt?: string | null;
22
+ [key: string]: JsonValue | undefined;
22
23
  };
23
24
  export interface RepeatableFormSectionProps {
24
25
  /** Section type identifier */
@@ -51,7 +51,7 @@ export { DateRangeSelector, type DateRangeSelectorProps, type DateRangeSelectorO
51
51
  export { ChartLegend, type ChartLegendProps, type ChartLegendItem } from './ChartLegend';
52
52
  export { LineChart, type LineChartProps, type ChartDataPoint } from './LineChart';
53
53
  export { ProgressDots, type ProgressDotsProps, type DotState, type DotSize } from './ProgressDots';
54
- export * from '../../game/molecules';
54
+ export * from '../../game/2d';
55
55
  export { GraphView, type GraphViewProps, type GraphViewNode, type GraphViewEdge } from './GraphView';
56
56
  export { MapView, type MapViewProps, type MapMarkerData, type MapRouteData, type MapRouteWaypoint } from './MapView';
57
57
  export { NumberStepper, type NumberStepperProps, type NumberStepperSize } from './NumberStepper';
@@ -9,7 +9,7 @@ export { MasterDetail, type MasterDetailProps } from "./MasterDetail";
9
9
  export { StateMachineView, DomStateMachineVisualizer, OrbitalStateMachineView, type StateMachineViewProps, type TransitionBundle, } from "./StateMachineView";
10
10
  export * from "./book";
11
11
  export * from "./layout";
12
- export * from "../../game/organisms";
12
+ export * from "../../game/2d";
13
13
  export { UISlotRenderer, UISlotComponent, SlotContentRenderer, type UISlotRendererProps, } from "./UISlotRenderer";
14
14
  export { ModalSlot, type ModalSlotProps } from "./ModalSlot";
15
15
  export { DrawerSlot, type DrawerSlotProps } from "./DrawerSlot";
@@ -2,19 +2,19 @@ export type { TemplateProps } from './types';
2
2
  export { DashboardLayout, type DashboardLayoutProps, type NavItem } from './DashboardLayout';
3
3
  export { AuthLayout, type AuthLayoutProps } from '../../marketing/templates/AuthLayout';
4
4
  export { CounterTemplate, type CounterTemplateProps, type CounterSize, type CounterVariant } from './CounterTemplate';
5
- export { GameTemplate, type GameTemplateProps } from '../../game/templates/GameTemplate';
5
+ export { GameTemplate, type GameTemplateProps } from '../../game/2d/GameTemplate';
6
6
  export { GenericAppTemplate, type GenericAppTemplateProps } from './GenericAppTemplate';
7
- export { GameShell, type GameShellProps } from '../../game/templates/GameShell';
8
- export { BattleTemplate, type BattleTemplateProps, type BattlePhase, type BattleSlotContext, } from '../../game/templates/BattleTemplate';
9
- export { CastleTemplate, type CastleTemplateProps, type CastleSlotContext, } from '../../game/templates/CastleTemplate';
10
- export { WorldMapTemplate, type WorldMapTemplateProps, type WorldMapSlotContext, } from '../../game/templates/WorldMapTemplate';
11
- export { PlatformerTemplate, type PlatformerTemplateProps, } from '../../game/templates/PlatformerTemplate';
12
- export { TowerDefenseTemplate, type TowerDefenseTemplateProps, } from '../../game/templates/TowerDefenseTemplate';
13
- export { RoguelikeTemplate, type RoguelikeTemplateProps, } from '../../game/templates/RoguelikeTemplate';
14
- export { TopDownShooterTemplate, type TopDownShooterTemplateProps, } from '../../game/templates/TopDownShooterTemplate';
15
- export { CityBuilderTemplate, type CityBuilderTemplateProps, } from '../../game/templates/CityBuilderTemplate';
16
- export { VisualNovelTemplate, type VisualNovelTemplateProps, } from '../../game/templates/VisualNovelTemplate';
17
- export { CardBattlerTemplate, type CardBattlerTemplateProps, } from '../../game/templates/CardBattlerTemplate';
7
+ export { GameShell, type GameShellProps } from '../../game/2d/GameShell';
8
+ export { BattleTemplate, type BattleTemplateProps, type BattlePhase, type BattleSlotContext, } from '../../game/2d/BattleTemplate';
9
+ export { CastleTemplate, type CastleTemplateProps, type CastleSlotContext, } from '../../game/2d/CastleTemplate';
10
+ export { WorldMapTemplate, type WorldMapTemplateProps, type WorldMapSlotContext, } from '../../game/2d/WorldMapTemplate';
11
+ export { PlatformerTemplate, type PlatformerTemplateProps, } from '../../game/2d/PlatformerTemplate';
12
+ export { TowerDefenseTemplate, type TowerDefenseTemplateProps, } from '../../game/2d/TowerDefenseTemplate';
13
+ export { RoguelikeTemplate, type RoguelikeTemplateProps, } from '../../game/2d/RoguelikeTemplate';
14
+ export { TopDownShooterTemplate, type TopDownShooterTemplateProps, } from '../../game/2d/TopDownShooterTemplate';
15
+ export { CityBuilderTemplate, type CityBuilderTemplateProps, } from '../../game/2d/CityBuilderTemplate';
16
+ export { VisualNovelTemplate, type VisualNovelTemplateProps, } from '../../game/2d/VisualNovelTemplate';
17
+ export { CardBattlerTemplate, type CardBattlerTemplateProps, } from '../../game/2d/CardBattlerTemplate';
18
18
  export { LandingPageTemplate, type LandingPageTemplateProps, type LandingPageEntity, } from '../../marketing/templates/LandingPageTemplate';
19
19
  export { PricingPageTemplate, type PricingPageTemplateProps, type PricingPageEntity, } from '../../marketing/templates/PricingPageTemplate';
20
20
  export { FeatureDetailPageTemplate, type FeatureDetailPageTemplateProps, type FeatureDetailPageEntity, type FeatureDetailSection, } from '../../marketing/templates/FeatureDetailPageTemplate';
@@ -7,7 +7,7 @@
7
7
  * @packageDocumentation
8
8
  */
9
9
  import React from 'react';
10
- import type { SlotItemData } from '../../TraitSlot';
10
+ import type { SlotItemData } from './TraitSlot';
11
11
  export interface ActionPaletteProps {
12
12
  /** Available actions */
13
13
  actions: SlotItemData[];
@@ -8,8 +8,8 @@
8
8
  * @packageDocumentation
9
9
  */
10
10
  import React from 'react';
11
- import type { DisplayStateProps } from '../../../../core/organisms/types';
12
- import type { SlotItemData } from '../../TraitSlot';
11
+ import type { DisplayStateProps } from '../../core/organisms/types';
12
+ import type { SlotItemData } from './TraitSlot';
13
13
  export interface ActionTileProps extends DisplayStateProps {
14
14
  /** The action data */
15
15
  action: SlotItemData;
@@ -20,8 +20,8 @@
20
20
  import React from 'react';
21
21
  import type { Asset, AssetUrl, EventEmit, EntityRow } from '@almadar/core';
22
22
  import type { DisplayStateProps } from '../../core/organisms/types';
23
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
24
- import type { ResolvedFrame } from './types/spriteAnimation';
23
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
24
+ import type { ResolvedFrame } from '../shared/spriteAnimationTypes';
25
25
  /** Battle phases an encounter walks through (UI value enum — not entity data). */
26
26
  export type BattlePhase = 'observation' | 'selection' | 'movement' | 'action' | 'enemy_turn' | 'game_over';
27
27
  /** Context exposed to render-prop slots. Carries coerced entity rows + UI helpers. */
@@ -10,9 +10,9 @@
10
10
  */
11
11
  import React from 'react';
12
12
  import type { TemplateProps } from '../../core/templates/types';
13
- import type { BattleBoardProps } from '../organisms/BattleBoard';
14
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../organisms/types/isometric';
15
- export type { BattlePhase, BattleSlotContext, } from '../organisms/BattleBoard';
13
+ import type { BattleBoardProps } from './BattleBoard';
14
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
15
+ export type { BattlePhase, BattleSlotContext, } from './BattleBoard';
16
16
  export interface BattleTemplateProps extends TemplateProps {
17
17
  /** Canvas render scale */
18
18
  scale?: number;
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
3
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
4
4
  import type { DisplayStateProps } from '../../core/organisms/types';
5
- import type { IsometricCanvasProps } from '../molecules/IsometricCanvas';
5
+ import type { Canvas2DProps } from './Canvas2D';
6
6
  export interface BoardgameBoardProps extends DisplayStateProps {
7
7
  /** Board squares (flat top-down grid tiles) */
8
8
  tiles?: IsometricTile[];
@@ -10,8 +10,8 @@ export interface BoardgameBoardProps extends DisplayStateProps {
10
10
  units?: IsometricUnit[];
11
11
  /** Features (markers, structures, etc.) on the board */
12
12
  features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as IsometricCanvas.assetManifest) */
14
- assetManifest?: IsometricCanvasProps['assetManifest'];
13
+ /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
+ assetManifest?: Canvas2DProps['assetManifest'];
15
15
  /** Base URL prepended to asset paths */
16
16
  assetBaseUrl?: AssetUrl;
17
17
  /** Render scale */
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import React from 'react';
12
12
  import type { AssetUrl, EventEmit, EntityRow } from '@almadar/core';
13
- import type { DisplayStateProps } from '../../../../core/organisms/types';
13
+ import type { DisplayStateProps } from '../../core/organisms/types';
14
14
  /** A draggable build component (UI value DTO read off the entity). */
15
15
  export interface BuilderComponent {
16
16
  id: string;
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Canvas2D
3
+ *
4
+ * The unified 2D game renderer (GR-6 consolidation). One canvas, a `projection`
5
+ * axis, layered render passes, opt-in clock. Absorbs IsometricCanvas (iso/hex/flat),
6
+ * GameCanvas2D (→ `projection:'free'`, pixel-direct draw) and PlatformerCanvas
7
+ * (→ `projection:'side'` + `platforms[]`).
8
+ *
9
+ * Pure renderer: every game datum arrives via props; only view state (viewport,
10
+ * camera, sprite cache) is local. The clock is LOLO-driven by default — `animate`
11
+ * opts a board into an internal RAF, but the default is OFF.
12
+ *
13
+ * Projection modes:
14
+ * - `isometric | hex | flat`: 2:1 diamond / pointy-top hex / orthographic square,
15
+ * all via `isoToScreen` — identical to IsometricCanvas.
16
+ * - `free`: tile/unit/feature x,y are SCREEN PIXELS drawn directly (no diamond),
17
+ * reusing the same sprite-drawing passes.
18
+ * - `side`: side-view pixel space with `platforms[]` (AABB) + follow-camera +
19
+ * keyboard input — an isolated branch ported from PlatformerCanvas.
20
+ *
21
+ * @packageDocumentation
22
+ */
23
+ import * as React from 'react';
24
+ import type { Asset, EventEmit } from '@almadar/core';
25
+ import type { IsometricTile, IsometricUnit, IsometricFeature, ActiveEffect } from '../shared/isometricTypes';
26
+ import type { ResolvedFrame } from '../shared/spriteAnimationTypes';
27
+ import type { UiError } from '../../core/atoms/types';
28
+ export interface TileCoord {
29
+ x: number;
30
+ y: number;
31
+ }
32
+ /** Projection axis. iso/hex/flat use `isoToScreen`; `free` is pixel-direct; `side`
33
+ * is side-view pixel space with platforms (gravity lives in the LOLO model). */
34
+ export type Projection = 'isometric' | 'hex' | 'flat' | 'free' | 'side';
35
+ /** Camera behavior. `pan-zoom` = user drag+wheel; `follow` = track the player/
36
+ * selected unit; `fixed` = no camera motion. */
37
+ export type CameraMode = 'pan-zoom' | 'follow' | 'fixed';
38
+ /** A side-view platform (AABB rect). `side` projection only. */
39
+ export interface Platform {
40
+ x: number;
41
+ y: number;
42
+ width: number;
43
+ height: number;
44
+ type?: 'ground' | 'platform' | 'hazard' | 'goal';
45
+ }
46
+ /** A side-view player. The model owns physics; Canvas2D only interpolates+draws. */
47
+ export interface SidePlayer {
48
+ x: number;
49
+ y: number;
50
+ width?: number;
51
+ height?: number;
52
+ vx?: number;
53
+ vy?: number;
54
+ grounded?: boolean;
55
+ facingRight?: boolean;
56
+ }
57
+ export interface Canvas2DProps {
58
+ /** Additional CSS classes */
59
+ className?: string;
60
+ /** Loading state indicator */
61
+ isLoading?: boolean;
62
+ /** Error state */
63
+ error?: UiError | null;
64
+ /** Projection axis (default 'isometric'). Replaces the old `tileLayout`. */
65
+ projection?: Projection;
66
+ /** Tiles to render */
67
+ tiles?: IsometricTile[];
68
+ /** Units on the board */
69
+ units?: IsometricUnit[];
70
+ /** Features (resources, portals, buildings, etc.) */
71
+ features?: IsometricFeature[];
72
+ /** Active visual effects, drawn after units */
73
+ effects?: ActiveEffect[];
74
+ /** Side-view platforms (AABB). `projection:'side'` only. */
75
+ platforms?: Platform[];
76
+ /** Side-view player. `projection:'side'` only. */
77
+ player?: SidePlayer;
78
+ /** Background image (tiled behind iso/hex/flat/free; stretched in side). */
79
+ backgroundImage?: Asset;
80
+ /** Currently selected unit ID */
81
+ selectedUnitId?: string | null;
82
+ /** Valid move positions (pulsing green highlights) */
83
+ validMoves?: TileCoord[];
84
+ /** Attack target positions (pulsing red highlights) */
85
+ attackTargets?: TileCoord[];
86
+ /** Hovered tile position */
87
+ hoveredTile?: TileCoord | null;
88
+ /** Emits UI:{tileClickEvent} with { x, y } on tile click */
89
+ tileClickEvent?: EventEmit<{
90
+ x: number;
91
+ y: number;
92
+ }>;
93
+ /** Emits UI:{unitClickEvent} with { unitId } on unit click */
94
+ unitClickEvent?: EventEmit<{
95
+ unitId: string;
96
+ }>;
97
+ /** Emits UI:{tileHoverEvent} with { x, y } on tile hover */
98
+ tileHoverEvent?: EventEmit<{
99
+ x: number;
100
+ y: number;
101
+ }>;
102
+ /** Emits UI:{tileLeaveEvent} with {} on tile leave */
103
+ tileLeaveEvent?: EventEmit<Record<string, never>>;
104
+ /** Emits UI:{keyEvent} with { key } on keydown — for side/free keyboard control */
105
+ keyEvent?: EventEmit<{
106
+ key: string;
107
+ }>;
108
+ /** Camera behavior (default 'pan-zoom'). */
109
+ camera?: CameraMode;
110
+ /** Render scale (0.4 = 40% zoom). */
111
+ scale?: number;
112
+ /** Extra scale multiplier for unit draw size. 1 = default. */
113
+ unitScale?: number;
114
+ /** Toggle minimap overlay. */
115
+ showMinimap?: boolean;
116
+ /** Opt-in internal RAF clock. DEFAULT OFF — the LOLO state machine drives the clock. */
117
+ animate?: {
118
+ fps: number;
119
+ };
120
+ /** Show debug grid lines and coordinates. */
121
+ debug?: boolean;
122
+ /** Ratio of unit draw height to scaledFloorHeight. Default 1.5. */
123
+ spriteHeightRatio?: number;
124
+ /** Max unit draw width as a ratio of scaledTileWidth. Default 0.6. */
125
+ spriteMaxWidthRatio?: number;
126
+ /** Override for the diamond-top Y offset within the tile sprite. */
127
+ diamondTopY?: number;
128
+ /** Resolve terrain sprite URL from terrain key */
129
+ getTerrainSprite?: (terrain: string) => string | undefined;
130
+ /** Resolve feature sprite URL from feature type key */
131
+ getFeatureSprite?: (featureType: string) => string | undefined;
132
+ /** Resolve unit static sprite URL */
133
+ getUnitSprite?: (unit: IsometricUnit) => string | undefined;
134
+ /** Resolve animated sprite sheet frame for a unit */
135
+ resolveUnitFrame?: (unitId: string) => ResolvedFrame | null;
136
+ /** Additional sprite URLs to preload (e.g., effect sprites) */
137
+ effectSpriteUrls?: string[];
138
+ /** Draw canvas effects after units (canvas-specific: cannot be declarative) */
139
+ onDrawEffects?: (ctx: CanvasRenderingContext2D, animTime: number, getImage: (url: string) => HTMLImageElement | undefined) => void;
140
+ /** Player sprite URL for `side`. */
141
+ playerSprite?: Asset;
142
+ /** Platform-type → tile sprite URL map for `side`. */
143
+ tileSprites?: Record<string, Asset>;
144
+ /** Background color for `side` (when no backgroundImage). */
145
+ bgColor?: string;
146
+ /** World dimensions for `side` follow-camera clamp. */
147
+ worldWidth?: number;
148
+ worldHeight?: number;
149
+ /** Manifest mapping entity keys to resolved Asset objects (fallback resolution). */
150
+ assetManifest?: {
151
+ terrains?: Record<string, Asset>;
152
+ units?: Record<string, Asset>;
153
+ features?: Record<string, Asset>;
154
+ effects?: Record<string, Asset>;
155
+ };
156
+ }
157
+ export declare function Canvas2D({ className, isLoading, error, projection, tiles: _tilesPropRaw, units: _unitsPropRaw, features: _featuresPropRaw, effects: _effectsPropRaw, platforms, player, backgroundImage, selectedUnitId, validMoves, attackTargets, hoveredTile, tileClickEvent, unitClickEvent, tileHoverEvent, tileLeaveEvent, keyEvent, camera, scale, unitScale, showMinimap, animate, debug, spriteHeightRatio, spriteMaxWidthRatio, diamondTopY: diamondTopYProp, getTerrainSprite, getFeatureSprite, getUnitSprite, resolveUnitFrame, effectSpriteUrls, onDrawEffects, playerSprite, tileSprites, bgColor, worldWidth, worldHeight, assetManifest, }: Canvas2DProps): React.JSX.Element;
158
+ export declare namespace Canvas2D {
159
+ var displayName: string;
160
+ }
161
+ export default Canvas2D;
@@ -25,10 +25,10 @@
25
25
  */
26
26
  import * as React from 'react';
27
27
  import type { AssetUrl, EventEmit } from '@almadar/core';
28
- import type { CombatActionType, EffectAssetManifest } from './types/effects';
28
+ import type { CombatActionType, EffectAssetManifest } from '../shared/effects';
29
29
  import type { UiError } from '../../core/atoms/types';
30
- export type { CombatActionType } from './types/effects';
31
- export type { EffectAssetManifest } from './types/effects';
30
+ export type { CombatActionType } from '../shared/effects';
31
+ export type { EffectAssetManifest } from '../shared/effects';
32
32
  export interface CanvasEffectProps {
33
33
  /** The type of combat action to visualise */
34
34
  actionType: CombatActionType;
@@ -7,7 +7,7 @@
7
7
  import React from 'react';
8
8
  import type { EventEmit } from '@almadar/core';
9
9
  import type { TemplateProps } from '../../core/templates/types';
10
- import type { CardBattlerBoardProps, CardBattlerCard } from '../organisms/CardBattlerBoard';
10
+ import type { CardBattlerBoardProps, CardBattlerCard } from './CardBattlerBoard';
11
11
  export interface CardBattlerTemplateProps extends TemplateProps {
12
12
  title?: string;
13
13
  deck?: CardBattlerCard[];
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import React from 'react';
16
16
  import type { Asset, EventEmit, EntityRow } from '@almadar/core';
17
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
17
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
18
18
  /** Manifest of per-kind sprite maps (UI value DTO). */
19
19
  type CastleAssetManifest = {
20
20
  terrains?: Record<string, Asset>;
@@ -10,9 +10,9 @@
10
10
  */
11
11
  import React from 'react';
12
12
  import type { TemplateProps } from '../../core/templates/types';
13
- import type { CastleBoardProps } from '../organisms/CastleBoard';
14
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../organisms/types/isometric';
15
- export type { CastleSlotContext } from '../organisms/CastleBoard';
13
+ import type { CastleBoardProps } from './CastleBoard';
14
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
15
+ export type { CastleSlotContext } from './CastleBoard';
16
16
  export interface CastleTemplateProps extends TemplateProps {
17
17
  /** Canvas render scale */
18
18
  scale?: number;
@@ -7,7 +7,7 @@
7
7
  import React from 'react';
8
8
  import type { EventEmit } from '@almadar/core';
9
9
  import type { TemplateProps } from '../../core/templates/types';
10
- import type { CityBuilderBoardProps, CityBuilderTile, CityBuilderBuilding, CityBuilderBuildType } from '../organisms/CityBuilderBoard';
10
+ import type { CityBuilderBoardProps, CityBuilderTile, CityBuilderBuilding, CityBuilderBuildType } from './CityBuilderBoard';
11
11
  export interface CityBuilderTemplateProps extends TemplateProps {
12
12
  title?: string;
13
13
  tiles?: CityBuilderTile[];
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import React from 'react';
18
18
  import type { AssetUrl, EventEmit, EntityRow } from '@almadar/core';
19
- import type { DisplayStateProps } from '../../../../core/organisms/types';
19
+ import type { DisplayStateProps } from '../../core/organisms/types';
20
20
  /** A sortable item (UI value DTO read off the entity). */
21
21
  export interface ClassifierItem {
22
22
  id: string;
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ import type { EventEmit } from '@almadar/core';
3
+ import type { IconInput } from '../../core/atoms';
4
+ export type ControlGridKind = 'dpad' | 'actions';
5
+ export interface ControlGridButton {
6
+ id: string;
7
+ label?: string;
8
+ icon?: IconInput;
9
+ variant?: 'primary' | 'secondary' | 'ghost' | string;
10
+ }
11
+ export type DPadDirection = 'up' | 'down' | 'left' | 'right';
12
+ export interface ControlGridProps {
13
+ kind: ControlGridKind;
14
+ /** action buttons (kind="actions") */
15
+ buttons?: ControlGridButton[];
16
+ /** Layout for kind="actions" */
17
+ layout?: 'horizontal' | 'vertical' | 'diamond';
18
+ /** Whether to include diagonal buttons (kind="dpad") */
19
+ includeDiagonals?: boolean;
20
+ /** Called when a button/direction is pressed or released */
21
+ onAction?: (id: string, pressed: boolean) => void;
22
+ /** Event-bus event emitted with `{ id, pressed }` on press/release */
23
+ actionEvent?: EventEmit<{
24
+ id: string;
25
+ pressed: boolean;
26
+ }>;
27
+ /** Called when a direction is pressed or released (kind="dpad" convenience overload) */
28
+ onDirection?: (direction: DPadDirection, pressed: boolean) => void;
29
+ /** Event-bus event emitted with `{ direction, pressed }` (kind="dpad") */
30
+ directionEvent?: EventEmit<{
31
+ direction: DPadDirection;
32
+ pressed: boolean;
33
+ }>;
34
+ size?: 'sm' | 'md' | 'lg';
35
+ disabled?: boolean;
36
+ className?: string;
37
+ }
38
+ export declare function ControlGrid({ kind, buttons, layout, includeDiagonals, onAction, actionEvent, onDirection, directionEvent, size, disabled, className, }: ControlGridProps): React.JSX.Element;
39
+ export declare namespace ControlGrid {
40
+ var displayName: string;
41
+ }
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import React from 'react';
12
12
  import type { EventEmit, EntityRow, EntityWith } from '@almadar/core';
13
- import type { DisplayStateProps } from '../../../../core/organisms/types';
13
+ import type { DisplayStateProps } from '../../core/organisms/types';
14
14
  /** A reviewable code line (UI value DTO read off the entity). */
15
15
  export interface DebuggerLine {
16
16
  id: string;
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import React from 'react';
14
14
  import type { EventEmit, EntityRow } from '@almadar/core';
15
- import type { DisplayStateProps } from '../../../../core/organisms/types';
15
+ import type { DisplayStateProps } from '../../core/organisms/types';
16
16
  import type { RuleDefinition } from './RuleEditor';
17
17
  export interface EventHandlerBoardProps extends DisplayStateProps {
18
18
  /** Puzzle board-state entity (single row or array). The board reads
@@ -24,7 +24,7 @@ export interface FishingBoardProps extends DisplayStateProps {
24
24
  unitId: string;
25
25
  }>;
26
26
  }
27
- export declare function FishingBoard({ backgroundImage, scale, showMinimap, enableCamera, width, height, isLoading, error, className, }: FishingBoardProps): React.ReactElement;
27
+ export declare function FishingBoard({ backgroundImage, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: FishingBoardProps): React.ReactElement;
28
28
  export declare namespace FishingBoard {
29
29
  var displayName: string;
30
30
  }
@@ -17,7 +17,7 @@
17
17
  * @packageDocumentation
18
18
  */
19
19
  import React from 'react';
20
- import { type AudioManifest, type GameAudioControls } from './hooks/useGameAudio';
20
+ import { type AudioManifest, type GameAudioControls } from './useGameAudio';
21
21
  import type { UiError } from '../../core/atoms/types';
22
22
  export type GameAudioContextValue = Pick<GameAudioControls, 'muted' | 'setMuted' | 'masterVolume' | 'setMasterVolume' | 'play' | 'playMusic' | 'stopMusic'>;
23
23
  export declare const GameAudioContext: React.Context<GameAudioContextValue | null>;
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ import type { Asset, EventEmit } from '@almadar/core';
3
+ export interface GameCardProps {
4
+ id: string;
5
+ cost?: number;
6
+ /** Card art asset */
7
+ art?: Asset;
8
+ attack?: number;
9
+ defense?: number;
10
+ name?: string;
11
+ selected?: boolean;
12
+ disabled?: boolean;
13
+ /** Size variant — controls card dimensions and art pixel size */
14
+ size?: 'sm' | 'md' | 'lg';
15
+ /** Direct click callback */
16
+ onClick?: (id: string) => void;
17
+ /** Event-bus event emitted with `{ cardId }` on click */
18
+ clickEvent?: EventEmit<{
19
+ cardId: string;
20
+ }>;
21
+ className?: string;
22
+ }
23
+ export declare function GameCard({ id, cost, art, attack, defense, name, selected, disabled, size, onClick, clickEvent, className, }: GameCardProps): React.JSX.Element;
24
+ export declare namespace GameCard {
25
+ var displayName: string;
26
+ }
@@ -0,0 +1,26 @@
1
+ export interface HealthBarProps {
2
+ /** Current value */
3
+ current: number;
4
+ /** Maximum value */
5
+ max: number;
6
+ /** Display format.
7
+ * - `hearts` / `bar` / `numeric` — health display
8
+ * - `progress` — XP / generic progress bar with optional level badge and value label */
9
+ format?: 'hearts' | 'bar' | 'numeric' | 'progress';
10
+ /** Current level — shown as "Lv.N" badge when format="progress" */
11
+ level?: number;
12
+ /** Show value label below bar when format="progress" */
13
+ showLabel?: boolean;
14
+ /** Label suffix shown next to the value (e.g. "XP") when showLabel=true */
15
+ labelSuffix?: string;
16
+ /** Size variant */
17
+ size?: 'sm' | 'md' | 'lg';
18
+ /** Additional CSS classes */
19
+ className?: string;
20
+ /** Animation on change */
21
+ animated?: boolean;
22
+ }
23
+ export declare function HealthBar({ current, max, format, level, showLabel, labelSuffix, size, className, animated, }: HealthBarProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare namespace HealthBar {
25
+ var displayName: string;
26
+ }
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
3
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
4
4
  import type { DisplayStateProps } from '../../core/organisms/types';
5
- import type { IsometricCanvasProps } from '../molecules/IsometricCanvas';
5
+ import type { Canvas2DProps } from './Canvas2D';
6
6
  export interface HexStrategyBoardProps extends DisplayStateProps {
7
7
  /** Hex grid tiles */
8
8
  tiles?: IsometricTile[];
@@ -10,8 +10,8 @@ export interface HexStrategyBoardProps extends DisplayStateProps {
10
10
  units?: IsometricUnit[];
11
11
  /** Features (resources, structures, etc.) on the board */
12
12
  features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as IsometricCanvas.assetManifest) */
14
- assetManifest?: IsometricCanvasProps['assetManifest'];
13
+ /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
+ assetManifest?: Canvas2DProps['assetManifest'];
15
15
  /** Base URL prepended to manifest sprite paths */
16
16
  assetBaseUrl?: AssetUrl;
17
17
  /** Render scale */
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
3
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
4
4
  import type { DisplayStateProps } from '../../core/organisms/types';
5
- import type { IsometricCanvasProps } from '../molecules/IsometricCanvas';
5
+ import type { Canvas2DProps } from './Canvas2D';
6
6
  export interface HolidayRunnerBoardProps extends DisplayStateProps {
7
7
  /** Ground/sky terrain tiles for the side-scroll strip */
8
8
  tiles?: IsometricTile[];
@@ -10,8 +10,8 @@ export interface HolidayRunnerBoardProps extends DisplayStateProps {
10
10
  units?: IsometricUnit[];
11
11
  /** Features (gifts, obstacles, etc.) on the board */
12
12
  features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as IsometricCanvas.assetManifest) */
14
- assetManifest?: IsometricCanvasProps['assetManifest'];
13
+ /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
+ assetManifest?: Canvas2DProps['assetManifest'];
15
15
  /** Base URL prepended to manifest sprite paths */
16
16
  assetBaseUrl?: AssetUrl;
17
17
  /** Render scale */
@@ -25,9 +25,9 @@
25
25
  */
26
26
  import * as React from 'react';
27
27
  import type { Asset, AssetUrl, EventEmit } from '@almadar/core';
28
- import type { IsometricTile, IsometricUnit, IsometricFeature, ActiveEffect } from '../organisms/types/isometric';
29
- import type { ResolvedFrame } from '../organisms/types/spriteAnimation';
30
- import type { TileLayout } from '../organisms/utils/isometric';
28
+ import type { IsometricTile, IsometricUnit, IsometricFeature, ActiveEffect } from '../shared/isometricTypes';
29
+ import type { ResolvedFrame } from '../shared/spriteAnimationTypes';
30
+ import type { TileLayout } from '../shared/isometric';
31
31
  import type { UiError } from '../../core/atoms/types';
32
32
  /** Event Contract:
33
33
  * Emits: UI:TILE_CLICK
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from './types/isometric';
3
+ import type { IsometricTile, IsometricUnit, IsometricFeature } from '../shared/isometricTypes';
4
4
  import type { DisplayStateProps } from '../../core/organisms/types';
5
- import type { IsometricCanvasProps } from '../molecules/IsometricCanvas';
5
+ import type { Canvas2DProps } from './Canvas2D';
6
6
  export interface MatchPuzzleBoardProps extends DisplayStateProps {
7
7
  /** Grid tiles for the match puzzle board */
8
8
  tiles?: IsometricTile[];
@@ -10,8 +10,8 @@ export interface MatchPuzzleBoardProps extends DisplayStateProps {
10
10
  units?: IsometricUnit[];
11
11
  /** Gem/feature items on the board */
12
12
  features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as IsometricCanvas.assetManifest) */
14
- assetManifest?: IsometricCanvasProps['assetManifest'];
13
+ /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
+ assetManifest?: Canvas2DProps['assetManifest'];
15
15
  /** Base URL prepended to manifest sprite paths */
16
16
  assetBaseUrl?: AssetUrl;
17
17
  /** Render scale */