@almadar/ui 5.81.0 → 5.83.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 (56) hide show
  1. package/dist/avl/index.cjs +1716 -5789
  2. package/dist/avl/index.js +684 -4757
  3. package/dist/components/core/atoms/Badge.d.ts +3 -0
  4. package/dist/components/core/atoms/Button.d.ts +3 -1
  5. package/dist/components/core/molecules/Tabs.d.ts +3 -1
  6. package/dist/components/core/templates/index.d.ts +0 -10
  7. package/dist/components/game/2d/atoms/GameCard.d.ts +3 -1
  8. package/dist/components/game/2d/molecules/Canvas2D.d.ts +6 -5
  9. package/dist/components/game/2d/molecules/ControlGrid.d.ts +6 -1
  10. package/dist/components/game/2d/molecules/index.d.ts +0 -34
  11. package/dist/components/game/3d/index.cjs +3 -1
  12. package/dist/components/game/3d/index.js +3 -1
  13. package/dist/components/index.cjs +8353 -12451
  14. package/dist/components/index.js +4667 -8731
  15. package/dist/marketing/index.cjs +6 -3
  16. package/dist/marketing/index.d.cts +5 -1
  17. package/dist/marketing/index.js +7 -4
  18. package/dist/providers/index.cjs +1583 -5656
  19. package/dist/providers/index.js +660 -4733
  20. package/dist/runtime/index.cjs +1577 -5650
  21. package/dist/runtime/index.js +664 -4737
  22. package/package.json +1 -1
  23. package/dist/components/game/2d/organisms/BattleBoard.d.ts +0 -132
  24. package/dist/components/game/2d/organisms/BoardgameBoard.d.ts +0 -37
  25. package/dist/components/game/2d/organisms/CastleBoard.d.ts +0 -107
  26. package/dist/components/game/2d/organisms/CityBuilderBoard.d.ts +0 -64
  27. package/dist/components/game/2d/organisms/FishingBoard.d.ts +0 -41
  28. package/dist/components/game/2d/organisms/HexStrategyBoard.d.ts +0 -44
  29. package/dist/components/game/2d/organisms/HolidayRunnerBoard.d.ts +0 -37
  30. package/dist/components/game/2d/organisms/MatchPuzzleBoard.d.ts +0 -37
  31. package/dist/components/game/2d/organisms/MinigolfBoard.d.ts +0 -37
  32. package/dist/components/game/2d/organisms/PinballBoard.d.ts +0 -43
  33. package/dist/components/game/2d/organisms/PirateBoard.d.ts +0 -44
  34. package/dist/components/game/2d/organisms/PlatformerBoard.d.ts +0 -48
  35. package/dist/components/game/2d/organisms/RacingBoard.d.ts +0 -44
  36. package/dist/components/game/2d/organisms/RoguelikeBoard.d.ts +0 -62
  37. package/dist/components/game/2d/organisms/SokobanBoard.d.ts +0 -37
  38. package/dist/components/game/2d/organisms/SpaceShmupBoard.d.ts +0 -44
  39. package/dist/components/game/2d/organisms/SpaceStationBoard.d.ts +0 -37
  40. package/dist/components/game/2d/organisms/SportsBoard.d.ts +0 -37
  41. package/dist/components/game/2d/organisms/TanksBoard.d.ts +0 -39
  42. package/dist/components/game/2d/organisms/TopDownShooterBoard.d.ts +0 -65
  43. package/dist/components/game/2d/organisms/TowerDefenseBoard.d.ts +0 -87
  44. package/dist/components/game/2d/organisms/UncontrolledBattleBoard.d.ts +0 -43
  45. package/dist/components/game/2d/organisms/WorldMapBoard.d.ts +0 -155
  46. package/dist/components/game/2d/templates/BattleTemplate.d.ts +0 -34
  47. package/dist/components/game/2d/templates/CardBattlerTemplate.d.ts +0 -35
  48. package/dist/components/game/2d/templates/CastleTemplate.d.ts +0 -32
  49. package/dist/components/game/2d/templates/CityBuilderTemplate.d.ts +0 -40
  50. package/dist/components/game/2d/templates/PlatformerTemplate.d.ts +0 -27
  51. package/dist/components/game/2d/templates/RoguelikeTemplate.d.ts +0 -23
  52. package/dist/components/game/2d/templates/TopDownShooterTemplate.d.ts +0 -42
  53. package/dist/components/game/2d/templates/TowerDefenseTemplate.d.ts +0 -43
  54. package/dist/components/game/2d/templates/VisualNovelTemplate.d.ts +0 -28
  55. package/dist/components/game/2d/templates/WorldMapTemplate.d.ts +0 -38
  56. package/dist/components/game/shared/hooks/useBattleState.d.ts +0 -47
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@almadar/ui",
3
- "version": "5.81.0",
3
+ "version": "5.83.0",
4
4
  "description": "React UI components, hooks, and providers for Almadar",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -1,132 +0,0 @@
1
- /**
2
- * BattleBoard
3
- *
4
- * Core rendering organism for turn-based battles.
5
- *
6
- * This is a **controlled-only** component: all game state (units, phase,
7
- * turn, gameResult, selectedUnitId) must be provided via the `entity` prop.
8
- * User interactions are communicated via event bus emissions so the parent
9
- * (typically an Orbital trait or the `useBattleState` hook) can manage
10
- * state transitions.
11
- *
12
- * For a self-managing version, use `UncontrolledBattleBoard` which
13
- * composes this component with the `useBattleState` hook.
14
- *
15
- * Animation-only state (movement interpolation, screen shake, hover) is
16
- * always managed locally.
17
- *
18
- * @packageDocumentation
19
- */
20
- import React from 'react';
21
- import type { Asset, AssetUrl, EventEmit, EntityRow } from '@almadar/core';
22
- import type { DisplayStateProps } from '../../../core/organisms/types';
23
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
24
- import type { ResolvedFrame } from '../../shared/spriteAnimationTypes';
25
- /** Battle phases an encounter walks through (UI value enum — not entity data). */
26
- export type BattlePhase = 'observation' | 'selection' | 'movement' | 'action' | 'enemy_turn' | 'game_over';
27
- /** Context exposed to render-prop slots. Carries coerced entity rows + UI helpers. */
28
- export type BattleSlotContext = {
29
- phase: BattlePhase;
30
- turn: number;
31
- selectedUnit: EntityRow | null;
32
- hoveredUnit: EntityRow | null;
33
- playerUnits: readonly EntityRow[];
34
- enemyUnits: readonly EntityRow[];
35
- gameResult: 'victory' | 'defeat' | null;
36
- onEndTurn: () => void;
37
- onCancel: () => void;
38
- onReset: () => void;
39
- attackTargets: Array<{
40
- x: number;
41
- y: number;
42
- }>;
43
- /** Resolve screen position of a tile for overlays */
44
- tileToScreen: (x: number, y: number) => {
45
- x: number;
46
- y: number;
47
- };
48
- };
49
- /** Asset manifest shape for BattleBoard. */
50
- type BattleAssetManifest = {
51
- terrains?: Record<string, Asset>;
52
- units?: Record<string, Asset>;
53
- features?: Record<string, Asset>;
54
- effects?: Record<string, Asset>;
55
- ui?: Record<string, Asset>;
56
- };
57
- export interface BattleBoardProps extends DisplayStateProps {
58
- /** Entity (single board state) containing all board data */
59
- entity?: EntityRow | readonly EntityRow[];
60
- /** Direct tile data — takes priority over entity-derived tiles. */
61
- tiles?: IsometricTile[];
62
- /** Direct unit data — takes priority over entity-derived units. */
63
- units?: IsometricUnit[];
64
- /** Direct feature data — takes priority over entity-derived features. */
65
- features?: IsometricFeature[];
66
- /** Direct asset manifest — takes priority over entity-derived manifest. */
67
- assetManifest?: BattleAssetManifest;
68
- /** Canvas render scale */
69
- scale?: number;
70
- /** Unit draw-size multiplier */
71
- unitScale?: number;
72
- /** Ratio of unit draw height to scaledFloorHeight. Default 1.5. */
73
- spriteHeightRatio?: number;
74
- /** Max unit draw width as a ratio of scaledTileWidth. Default 0.6. */
75
- spriteMaxWidthRatio?: number;
76
- /** Header area -- receives battle context */
77
- header?: (ctx: BattleSlotContext) => React.ReactNode;
78
- /** Sidebar content (combat log, unit roster, etc.) */
79
- sidebar?: (ctx: BattleSlotContext) => React.ReactNode;
80
- /** Floating action buttons */
81
- actions?: (ctx: BattleSlotContext) => React.ReactNode;
82
- /** Floating overlays above the canvas (damage popups, tooltips) */
83
- overlay?: (ctx: BattleSlotContext) => React.ReactNode;
84
- /** Game-over screen overlay */
85
- gameOverOverlay?: (ctx: BattleSlotContext) => React.ReactNode;
86
- /** Called when a unit attacks another */
87
- onAttack?: (attacker: EntityRow, target: EntityRow, damage: number) => void;
88
- /** Called when battle ends */
89
- onGameEnd?: (result: 'victory' | 'defeat') => void;
90
- /** Called after a unit moves */
91
- onUnitMove?: (unit: EntityRow, to: {
92
- x: number;
93
- y: number;
94
- }) => void;
95
- /** Custom combat damage calculator */
96
- calculateDamage?: (attacker: EntityRow, target: EntityRow) => number;
97
- onDrawEffects?: (ctx: CanvasRenderingContext2D, timestamp: number) => void;
98
- hasActiveEffects?: boolean;
99
- effectSpriteUrls?: AssetUrl[];
100
- resolveUnitFrame?: (unitId: string) => ResolvedFrame | null;
101
- /** Emits UI:{tileClickEvent} with { x, y } on tile click */
102
- tileClickEvent?: EventEmit<{
103
- x: number;
104
- y: number;
105
- }>;
106
- /** Emits UI:{unitClickEvent} with { unitId } on unit click */
107
- unitClickEvent?: EventEmit<{
108
- unitId: string;
109
- }>;
110
- /** Emits UI:{endTurnEvent} with {} on end turn */
111
- endTurnEvent?: EventEmit<Record<string, never>>;
112
- /** Emits UI:{cancelEvent} with {} on cancel */
113
- cancelEvent?: EventEmit<Record<string, never>>;
114
- /** Emits UI:{gameEndEvent} with { result: 'victory' | 'defeat' } on game end */
115
- gameEndEvent?: EventEmit<{
116
- result: 'victory' | 'defeat';
117
- }>;
118
- /** Emits UI:{playAgainEvent} with {} on play again / reset */
119
- playAgainEvent?: EventEmit<Record<string, never>>;
120
- /** Emits UI:{attackEvent} with { attackerId, targetId, damage } on attack */
121
- attackEvent?: EventEmit<{
122
- attackerId: string;
123
- targetId: string;
124
- damage: number;
125
- }>;
126
- className?: string;
127
- }
128
- export declare function BattleBoard({ entity, tiles: propTiles, units: propUnits, features: propFeatures, assetManifest: propAssetManifest, scale, unitScale, spriteHeightRatio, spriteMaxWidthRatio, header, sidebar, actions, overlay, gameOverOverlay, onAttack, onGameEnd, onUnitMove, calculateDamage, onDrawEffects, hasActiveEffects, effectSpriteUrls, resolveUnitFrame, tileClickEvent, unitClickEvent, endTurnEvent, cancelEvent, gameEndEvent, playAgainEvent, attackEvent, className, }: BattleBoardProps): React.JSX.Element;
129
- export declare namespace BattleBoard {
130
- var displayName: string;
131
- }
132
- export default BattleBoard;
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- import type { Canvas2DProps } from '../molecules/Canvas2D';
6
- export interface BoardgameBoardProps extends DisplayStateProps {
7
- /** Board squares (flat top-down grid tiles) */
8
- tiles?: IsometricTile[];
9
- /** Tokens/units on the board */
10
- units?: IsometricUnit[];
11
- /** Features (markers, structures, etc.) on the board */
12
- features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
- assetManifest?: Canvas2DProps['assetManifest'];
15
- /** Base URL prepended to asset paths */
16
- assetBaseUrl?: AssetUrl;
17
- /** Render scale */
18
- scale?: number;
19
- /** Show minimap overlay */
20
- showMinimap?: boolean;
21
- /** Enable camera pan/zoom controls */
22
- enableCamera?: boolean;
23
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
24
- tileClickEvent?: EventEmit<{
25
- x: number;
26
- y: number;
27
- }>;
28
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
29
- unitClickEvent?: EventEmit<{
30
- unitId: string;
31
- }>;
32
- }
33
- export declare function BoardgameBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: BoardgameBoardProps): React.ReactElement;
34
- export declare namespace BoardgameBoard {
35
- var displayName: string;
36
- }
37
- export default BoardgameBoard;
@@ -1,107 +0,0 @@
1
- /**
2
- * CastleBoard
3
- *
4
- * Self-contained castle / base-management game board organism. Encapsulates all
5
- * isometric canvas rendering, hover/selection state, and slot-based layout.
6
- * Designed to be consumed by CastleTemplate (thin wrapper) or embedded directly
7
- * in any page that needs an isometric castle view.
8
- *
9
- * Accepts an `entity` prop (`EntityRow`) and optional declarative event props
10
- * (`featureClickEvent`, `unitClickEvent`, `tileClickEvent`) that emit through
11
- * the Orbital event bus.
12
- *
13
- * @packageDocumentation
14
- */
15
- import React from 'react';
16
- import type { Asset, EventEmit, EntityRow } from '@almadar/core';
17
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
18
- /** Manifest of per-kind sprite maps (UI value DTO). */
19
- type CastleAssetManifest = {
20
- terrains?: Record<string, Asset>;
21
- units?: Record<string, Asset>;
22
- features?: Record<string, Asset>;
23
- ui?: Record<string, Asset>;
24
- };
25
- /** Context exposed to render-prop slots */
26
- export type CastleSlotContext = {
27
- /** Currently hovered tile coordinates (null when not hovering) */
28
- hoveredTile: {
29
- x: number;
30
- y: number;
31
- } | null;
32
- /** Feature that sits on the hovered tile, if any */
33
- hoveredFeature: IsometricFeature | null;
34
- /** Unit that sits on the hovered tile, if any */
35
- hoveredUnit: IsometricUnit | null;
36
- /** The clicked feature (e.g. building) for detail view */
37
- selectedFeature: IsometricFeature | null;
38
- /** Clear selected feature */
39
- clearSelection: () => void;
40
- /** Resolve screen position for overlay positioning */
41
- tileToScreen: (x: number, y: number) => {
42
- x: number;
43
- y: number;
44
- };
45
- /** Canvas scale */
46
- scale: number;
47
- gold: number;
48
- health: number;
49
- maxHealth: number;
50
- wave: number;
51
- tickCount: number;
52
- buildings: readonly EntityRow[];
53
- result: 'none' | 'victory' | 'defeat';
54
- };
55
- export interface CastleBoardProps {
56
- /** Castle board-state entity (single row or array). The board reads
57
- * `tiles` / `features` / `units` arrays plus an `assetManifest` off it. */
58
- entity?: EntityRow | readonly EntityRow[];
59
- /** Direct tile data — takes priority over entity-derived tiles. */
60
- tiles?: IsometricTile[];
61
- /** Direct unit data — takes priority over entity-derived units. */
62
- units?: IsometricUnit[];
63
- /** Direct feature data — takes priority over entity-derived features. */
64
- features?: IsometricFeature[];
65
- /** Direct asset manifest — takes priority over entity-derived manifest. */
66
- assetManifest?: CastleAssetManifest;
67
- /** Canvas render scale */
68
- scale?: number;
69
- /** Top bar / header */
70
- header?: (ctx: CastleSlotContext) => React.ReactNode;
71
- /** Side panel content (buildings list, recruit tab, garrison tab) */
72
- sidePanel?: (ctx: CastleSlotContext) => React.ReactNode;
73
- /** Canvas overlay (hover tooltips, etc.) */
74
- overlay?: (ctx: CastleSlotContext) => React.ReactNode;
75
- /** Bottom bar (income summary, etc.) */
76
- footer?: (ctx: CastleSlotContext) => React.ReactNode;
77
- /** Called when a feature (building) is clicked */
78
- onFeatureClick?: (feature: IsometricFeature) => void;
79
- /** Called when a unit is clicked */
80
- onUnitClick?: (unit: IsometricUnit) => void;
81
- /** Called when any tile is clicked */
82
- onTileClick?: (x: number, y: number) => void;
83
- /** Event name to emit via event bus when a feature is clicked (emits UI:{featureClickEvent}) */
84
- featureClickEvent?: EventEmit<{
85
- featureId: string;
86
- featureType: string;
87
- x: number;
88
- y: number;
89
- }>;
90
- /** Event name to emit via event bus when a unit is clicked (emits UI:{unitClickEvent}) */
91
- unitClickEvent?: EventEmit<{
92
- unitId: string;
93
- }>;
94
- /** Event name to emit via event bus when a tile is clicked (emits UI:{tileClickEvent}) */
95
- tileClickEvent?: EventEmit<{
96
- x: number;
97
- y: number;
98
- }>;
99
- /** Emits UI:{playAgainEvent} with {} on play again / reset */
100
- playAgainEvent?: EventEmit<Record<string, never>>;
101
- className?: string;
102
- }
103
- export declare function CastleBoard({ entity, tiles: propTiles, units: propUnits, features: propFeatures, assetManifest: propAssetManifest, scale, header, sidePanel, overlay, footer, onFeatureClick, onUnitClick, onTileClick, featureClickEvent, unitClickEvent, tileClickEvent, playAgainEvent, className, }: CastleBoardProps): React.JSX.Element;
104
- export declare namespace CastleBoard {
105
- var displayName: string;
106
- }
107
- export default CastleBoard;
@@ -1,64 +0,0 @@
1
- import React from 'react';
2
- import type { Asset, EventEmit, EntityRow } from '@almadar/core';
3
- import type { DisplayStateProps } from '../../../core/organisms/types';
4
- /** Manifest of per-kind sprite maps (UI value DTO). */
5
- type CityBuilderAssetManifest = {
6
- terrains?: Record<string, Asset>;
7
- units?: Record<string, Asset>;
8
- features?: Record<string, Asset>;
9
- /** HUD chrome assets (panel backgrounds, stat icons, etc.) keyed by role. */
10
- ui?: Record<string, Asset>;
11
- };
12
- export interface CityBuilderTile {
13
- x: number;
14
- y: number;
15
- terrain?: string;
16
- terrainSprite?: Asset;
17
- passable?: boolean;
18
- }
19
- export interface CityBuilderBuilding {
20
- id: string;
21
- x: number;
22
- y: number;
23
- type: string;
24
- }
25
- /** A placeable building type shown in the build palette (UI value DTO). */
26
- export interface CityBuilderBuildType {
27
- type: string;
28
- label: string;
29
- cost: number;
30
- }
31
- export interface CityBuilderBoardProps extends DisplayStateProps {
32
- entity?: EntityRow | readonly EntityRow[];
33
- tiles?: CityBuilderTile[];
34
- buildings?: CityBuilderBuilding[];
35
- /** Asset base-url + terrain/unit/feature sprite maps (organism owns asset choice). */
36
- assetManifest?: CityBuilderAssetManifest;
37
- buildTypes?: CityBuilderBuildType[];
38
- pendingBuildType?: string;
39
- gold?: number;
40
- wood?: number;
41
- population?: number;
42
- tick?: number;
43
- result?: 'none' | 'won' | 'lost';
44
- scale?: number;
45
- unitScale?: number;
46
- spriteHeightRatio?: number;
47
- spriteMaxWidthRatio?: number;
48
- selectBuildTypeEvent?: EventEmit<{
49
- buildType: string;
50
- }>;
51
- placeBuildingEvent?: EventEmit<{
52
- x: number;
53
- y: number;
54
- }>;
55
- gameEndEvent?: EventEmit<{
56
- result: 'won' | 'lost';
57
- }>;
58
- className?: string;
59
- }
60
- export declare function CityBuilderBoard({ entity, tiles: propTiles, buildings: propBuildings, assetManifest: propAssetManifest, buildTypes: propBuildTypes, pendingBuildType: propPendingBuildType, gold: propGold, wood: propWood, population: propPopulation, result: propResult, scale, unitScale, spriteHeightRatio, spriteMaxWidthRatio, selectBuildTypeEvent, placeBuildingEvent, gameEndEvent, className, }: CityBuilderBoardProps): React.JSX.Element;
61
- export declare namespace CityBuilderBoard {
62
- var displayName: string;
63
- }
64
- export default CityBuilderBoard;
@@ -1,41 +0,0 @@
1
- import React from 'react';
2
- import type { Asset, EventEmit } from '@almadar/core';
3
- import type { DisplayStateProps } from '../../../core/organisms/types';
4
- /** Asset manifest shape for FishingBoard. */
5
- type FishingAssetManifest = {
6
- terrains?: Record<string, Asset>;
7
- units?: Record<string, Asset>;
8
- features?: Record<string, Asset>;
9
- effects?: Record<string, Asset>;
10
- ui?: Record<string, Asset>;
11
- };
12
- export interface FishingBoardProps extends DisplayStateProps {
13
- /** Background image asset for the fishing scene */
14
- backgroundImage?: Asset;
15
- /** Asset sprite manifest */
16
- assetManifest?: FishingAssetManifest;
17
- /** Render scale */
18
- scale?: number;
19
- /** Show minimap overlay */
20
- showMinimap?: boolean;
21
- /** Enable camera pan/zoom controls */
22
- enableCamera?: boolean;
23
- /** Canvas width in pixels */
24
- width?: number;
25
- /** Canvas height in pixels */
26
- height?: number;
27
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
28
- tileClickEvent?: EventEmit<{
29
- x: number;
30
- y: number;
31
- }>;
32
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
33
- unitClickEvent?: EventEmit<{
34
- unitId: string;
35
- }>;
36
- }
37
- export declare function FishingBoard({ backgroundImage, assetManifest, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: FishingBoardProps): React.ReactElement;
38
- export declare namespace FishingBoard {
39
- var displayName: string;
40
- }
41
- export default FishingBoard;
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- import type { Asset, AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- /** Asset manifest shape for HexStrategyBoard. */
6
- type HexStrategyAssetManifest = {
7
- terrains?: Record<string, Asset>;
8
- units?: Record<string, Asset>;
9
- features?: Record<string, Asset>;
10
- effects?: Record<string, Asset>;
11
- ui?: Record<string, Asset>;
12
- };
13
- export interface HexStrategyBoardProps extends DisplayStateProps {
14
- /** Hex grid tiles */
15
- tiles?: IsometricTile[];
16
- /** Units on the board */
17
- units?: IsometricUnit[];
18
- /** Features (resources, structures, etc.) on the board */
19
- features?: IsometricFeature[];
20
- /** Asset sprite manifest */
21
- assetManifest?: HexStrategyAssetManifest;
22
- /** Base URL prepended to manifest sprite paths */
23
- assetBaseUrl?: AssetUrl;
24
- /** Render scale */
25
- scale?: number;
26
- /** Show minimap overlay */
27
- showMinimap?: boolean;
28
- /** Enable camera pan/zoom controls */
29
- enableCamera?: boolean;
30
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
31
- tileClickEvent?: EventEmit<{
32
- x: number;
33
- y: number;
34
- }>;
35
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
36
- unitClickEvent?: EventEmit<{
37
- unitId: string;
38
- }>;
39
- }
40
- export declare function HexStrategyBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: HexStrategyBoardProps): React.ReactElement;
41
- export declare namespace HexStrategyBoard {
42
- var displayName: string;
43
- }
44
- export default HexStrategyBoard;
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- import type { Canvas2DProps } from '../molecules/Canvas2D';
6
- export interface HolidayRunnerBoardProps extends DisplayStateProps {
7
- /** Ground/sky terrain tiles for the side-scroll strip */
8
- tiles?: IsometricTile[];
9
- /** Runner and obstacle units on the board */
10
- units?: IsometricUnit[];
11
- /** Features (gifts, obstacles, etc.) on the board */
12
- features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
- assetManifest?: Canvas2DProps['assetManifest'];
15
- /** Base URL prepended to manifest sprite paths */
16
- assetBaseUrl?: AssetUrl;
17
- /** Render scale */
18
- scale?: number;
19
- /** Show minimap overlay */
20
- showMinimap?: boolean;
21
- /** Enable camera pan/zoom controls */
22
- enableCamera?: boolean;
23
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
24
- tileClickEvent?: EventEmit<{
25
- x: number;
26
- y: number;
27
- }>;
28
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
29
- unitClickEvent?: EventEmit<{
30
- unitId: string;
31
- }>;
32
- }
33
- export declare function HolidayRunnerBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: HolidayRunnerBoardProps): React.ReactElement;
34
- export declare namespace HolidayRunnerBoard {
35
- var displayName: string;
36
- }
37
- export default HolidayRunnerBoard;
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- import type { Canvas2DProps } from '../molecules/Canvas2D';
6
- export interface MatchPuzzleBoardProps extends DisplayStateProps {
7
- /** Grid tiles for the match puzzle board */
8
- tiles?: IsometricTile[];
9
- /** Units on the board */
10
- units?: IsometricUnit[];
11
- /** Gem/feature items on the board */
12
- features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
- assetManifest?: Canvas2DProps['assetManifest'];
15
- /** Base URL prepended to manifest sprite paths */
16
- assetBaseUrl?: AssetUrl;
17
- /** Render scale */
18
- scale?: number;
19
- /** Show minimap overlay */
20
- showMinimap?: boolean;
21
- /** Enable camera pan/zoom controls */
22
- enableCamera?: boolean;
23
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
24
- tileClickEvent?: EventEmit<{
25
- x: number;
26
- y: number;
27
- }>;
28
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
29
- unitClickEvent?: EventEmit<{
30
- unitId: string;
31
- }>;
32
- }
33
- export declare function MatchPuzzleBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: MatchPuzzleBoardProps): React.ReactElement;
34
- export declare namespace MatchPuzzleBoard {
35
- var displayName: string;
36
- }
37
- export default MatchPuzzleBoard;
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import type { AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- import type { Canvas2DProps } from '../molecules/Canvas2D';
6
- export interface MinigolfBoardProps extends DisplayStateProps {
7
- /** Isometric grid tiles */
8
- tiles?: IsometricTile[];
9
- /** Units on the board */
10
- units?: IsometricUnit[];
11
- /** Features (holes, obstacles, etc.) on the board */
12
- features?: IsometricFeature[];
13
- /** Asset sprite manifest (same shape as Canvas2D.assetManifest) */
14
- assetManifest?: Canvas2DProps['assetManifest'];
15
- /** Base URL prepended to manifest sprite paths */
16
- assetBaseUrl?: AssetUrl;
17
- /** Render scale */
18
- scale?: number;
19
- /** Show minimap overlay */
20
- showMinimap?: boolean;
21
- /** Enable camera pan/zoom controls */
22
- enableCamera?: boolean;
23
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
24
- tileClickEvent?: EventEmit<{
25
- x: number;
26
- y: number;
27
- }>;
28
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
29
- unitClickEvent?: EventEmit<{
30
- unitId: string;
31
- }>;
32
- }
33
- export declare function MinigolfBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: MinigolfBoardProps): React.ReactElement;
34
- export declare namespace MinigolfBoard {
35
- var displayName: string;
36
- }
37
- export default MinigolfBoard;
@@ -1,43 +0,0 @@
1
- import React from 'react';
2
- import type { Asset, AssetUrl, EventEmit, EntityRow } from '@almadar/core';
3
- import type { DisplayStateProps } from '../../../core/organisms/types';
4
- /** Asset manifest shape for PinballBoard. */
5
- type PinballAssetManifest = {
6
- terrains?: Record<string, Asset>;
7
- units?: Record<string, Asset>;
8
- features?: Record<string, Asset>;
9
- effects?: Record<string, Asset>;
10
- ui?: Record<string, Asset>;
11
- };
12
- export interface PinballBoardProps extends DisplayStateProps {
13
- /** Playfield tiles */
14
- tiles?: readonly EntityRow[];
15
- /** Ball units on the board */
16
- units?: readonly EntityRow[];
17
- /** Features (bumpers, paddles, etc.) on the board */
18
- features?: readonly EntityRow[];
19
- /** Asset sprite manifest */
20
- assetManifest?: PinballAssetManifest;
21
- /** Base URL prepended to manifest sprite paths */
22
- assetBaseUrl?: AssetUrl;
23
- /** Render scale */
24
- scale?: number;
25
- /** Show minimap overlay */
26
- showMinimap?: boolean;
27
- /** Enable camera pan/zoom controls */
28
- enableCamera?: boolean;
29
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
30
- tileClickEvent?: EventEmit<{
31
- x: number;
32
- y: number;
33
- }>;
34
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
35
- unitClickEvent?: EventEmit<{
36
- unitId: string;
37
- }>;
38
- }
39
- export declare function PinballBoard({ tiles: _tiles, units: _units, features: _features, assetManifest, assetBaseUrl: _assetBaseUrl, scale: _scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: PinballBoardProps): React.ReactElement;
40
- export declare namespace PinballBoard {
41
- var displayName: string;
42
- }
43
- export default PinballBoard;
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- import type { Asset, AssetUrl, EventEmit } from '@almadar/core';
3
- import type { IsometricTile, IsometricUnit, IsometricFeature } from '../../shared/isometricTypes';
4
- import type { DisplayStateProps } from '../../../core/organisms/types';
5
- /** Asset manifest shape for PirateBoard. */
6
- type PirateAssetManifest = {
7
- terrains?: Record<string, Asset>;
8
- units?: Record<string, Asset>;
9
- features?: Record<string, Asset>;
10
- effects?: Record<string, Asset>;
11
- ui?: Record<string, Asset>;
12
- };
13
- export interface PirateBoardProps extends DisplayStateProps {
14
- /** Sea/island grid tiles */
15
- tiles?: IsometricTile[];
16
- /** Ship and crew units on the board */
17
- units?: IsometricUnit[];
18
- /** Features (ports, treasures, etc.) on the board */
19
- features?: IsometricFeature[];
20
- /** Asset sprite manifest */
21
- assetManifest?: PirateAssetManifest;
22
- /** Base URL prepended to manifest sprite paths */
23
- assetBaseUrl?: AssetUrl;
24
- /** Render scale */
25
- scale?: number;
26
- /** Show minimap overlay */
27
- showMinimap?: boolean;
28
- /** Enable camera pan/zoom controls */
29
- enableCamera?: boolean;
30
- /** Declarative event: emits UI:{tileClickEvent} with { x, y } on tile click */
31
- tileClickEvent?: EventEmit<{
32
- x: number;
33
- y: number;
34
- }>;
35
- /** Declarative event: emits UI:{unitClickEvent} with { unitId } on unit click */
36
- unitClickEvent?: EventEmit<{
37
- unitId: string;
38
- }>;
39
- }
40
- export declare function PirateBoard({ tiles, units, features, assetManifest, assetBaseUrl, scale, showMinimap, enableCamera, tileClickEvent, unitClickEvent, isLoading, error, className, }: PirateBoardProps): React.ReactElement;
41
- export declare namespace PirateBoard {
42
- var displayName: string;
43
- }
44
- export default PirateBoard;