Components Reference
Quick reference for all React components included in RPGReact. For detailed tutorials, see the Tutorials section.
Navigation & Selection
Chooser
File: menus/src/components/Chooser.tsx Tutorial: Using Chooser and ActorChooser
Generic selectable list with UP/DOWN/OK input handling.
Props:
items: T[]- Array of items to displaychildren: (item: T, selected: boolean, index: number) => ReactNode- Render functionhasFocus: boolean- Whether component should accept inputonItemSelected?(item: T, index: number)- Called on OK pressonItemHighlighted?(item: T, index: number)- Called when selection changesresetSelection?: boolean- Reset to index 0 when items changedefaultSelection?: number- Initial selection index (default: 0)
ActorChooser
File: menus/src/components/ActorChooser.tsx Tutorial: Using Chooser and ActorChooser
Party member selector using Chooser with PartyMemberFull or PartyMemberCompact.
Props:
Extends
BaseMenuScreenPropsonActorSelected(actor: Game_Actor)- Called when actor selecteduseFullView?: boolean- Use full cards vs compact (default: false)
Layout & Structure
BaseMenuScreen
File: menus/src/components/BaseMenuScreen.tsx Tutorial: Using BaseMenuScreen
Base props interface for menu screens.
Props (BaseMenuScreenProps):
pageData: any- Game data and commands from RMMZisTestMenu: boolean- Whether in test modehasFocus: boolean- Whether screen has input focusselected: boolean- Whether screen is selected/active
BaseModal
File: menus/src/components/BaseModal.tsx Tutorial: Using BaseModal
Modal dialog with backdrop and CANCEL key support.
Props:
show: boolean- Whether modal is visibleonHide()- Called when CANCEL pressed or backdrop clickedclassName?: string- Additional CSS classeschildren- Modal content
Input Components
InputNumber
File: menus/src/components/InputNumber.tsx Tutorial: Using Input Number
Numeric input with increment/decrement buttons.
Props:
value: number- Current valuemin?: number- Minimum value (default: 0)max?: number- Maximum value (default: 999999)onChange(value: number)- Called when value changeshasFocus: boolean- Accept inputclassName?: string
InputName
File: menus/src/components/InputName.tsx Tutorial: Using Input Name
Character name input with keyboard grid.
Props:
initialName: string- Starting namemaxLength: number- Maximum name lengthonConfirm(name: string)- Called when confirmedonCancel()- Called when canceledhasFocus: boolean
SelectItem
File: menus/src/components/SelectItem.tsx Tutorial: Using Select Item
Item/weapon/armor selector from party inventory.
Props:
Extends
BaseMenuScreenPropsitemType: 'item' | 'weapon' | 'armor'- What to showonItemSelected(item: any)- Called when item chosenonCancel()- Called on cancel
Confirm
File: menus/src/components/Confirm.tsx Tutorial: Using Confirm
Global confirm dialog provider (Yes/No prompts).
Usage:
Display Components
Icon
File: menus/src/components/Icon.tsx Tutorial: Use Icons
Display icon from IconSet.png.
Props:
icon: number- Icon index (0-based)className?: string
Example:
ActorPortrait
File: menus/src/components/ActorPortrait.tsx Tutorial: Use Actor Portraits
Display actor's face/portrait image.
Props:
actor: Game_Actor- Actor to displayclassName?: string
ImageViewport
File: menus/src/components/ImageViewport.tsx
Display a subsection of a larger image (for sprite sheets).
Props:
src: string- Image pathviewport: { x: number, y: number, width: number, height: number }- Crop rectangleclassName?: string
Example:
ProgressBar
File: menus/src/components/ProgressBar.tsx
Generic progress bar component (used by XPProgresBar, ATB gauges, etc.).
Props:
percent: number- Fill percentage (0-100)outerClassName?: string- Outer container classesinnerClassName?: string- Inner bar classesouterStyle?: React.CSSProperties- Outer container inline stylesinnerStyle?: React.CSSProperties- Inner bar inline styleschildren?: ReactNode- Content overlaid on bar
WindowskinArrow
File: menus/src/components/WindowskinArrow.tsx
Directional arrow for quantity controls, navigation, etc.
Props:
direction: 'up' | 'down' | 'left' | 'right'- Arrow directionsize?: number- Size in pixels (default: 16)className?: string
Party Member Display
PartyMemberFull
File: menus/src/components/PartyMemberFull.tsx Tutorial: PartyMemberFull vs PartyMemberCompact
Full party member card with portrait, stats, HP/MP bars.
Props (PartyMemberProps):
member: Game_Actor- Actor to displaypageData: any- Game dataisTestMenu: booleanhasFocus: booleanselected: booleanclassName?: string
PartyMemberCompact
File: menus/src/components/PartyMemberCompact.tsx Tutorial: PartyMemberFull vs PartyMemberCompact
Compact party member display (name + HP/MP only).
Props: Same as PartyMemberFull
PartyMemberReward
File: menus/src/components/PartyMemberReward.tsx
Battle results party member card with XP animation.
Props:
Extends
PartyMemberPropsrewardExp: number- EXP gained in battle
Features:
Animates XP bar from starting exp to final exp
Shows level-up notifications
Supports skip via exposed ref handle
XPProgresBar
File: menus/src/components/XPProgresBar.tsx Tutorial: Level-Up Animation System
Animated XP progress bar with level-up detection.
Props:
partyMember: Game_Actor- Actor whose XP to displayclassName: string- CSS classesonAnimationComplete?()- Called when animation finishesstartExp?: number- Override starting exptargetExp?: number- Override target exp
Ref Handle:
skip()- Skip animation to final stategetLevelUpEvents(): number[]- Get levels gained
Message & Text Components
Message
File: menus/src/components/Message.tsx Tutorial: Messages, Typewriter, SpecialCodeRenderer
Display RPG Maker message text with text codes.
Props:
text: string- Message text (may contain codes like\C[1],\N[1])pageData: any- Game data for code resolutionclassName?: string
Typewriter
File: menus/src/components/Typewriter.tsx Tutorial: Messages, Typewriter, SpecialCodeRenderer
Text that appears character-by-character.
Props:
text: string- Text to displayspeed?: number- Characters per second (default: 20)onComplete?()- Called when typing finishesskip?: boolean- Show all text immediately
SpecialCodeRenderer
File: menus/src/components/SpecialCodeRenderer.tsx Tutorial: Messages, Typewriter, SpecialCodeRenderer
Parse and render RPG Maker text codes (colors, icons, names).
Props:
text: string- Raw text with codespageData: any- Game data
ScrollingText
File: menus/src/components/ScrollingText.tsx
Auto-scrolling text (for credits, long messages).
Props:
text: string- Text to scrollspeed?: number- Scroll speed in pixels per secondonComplete?()- Called when scrolling finishes
Utility Components
Minimap
File: menus/src/components/Minimap.tsx
Minimap display for current map.
Props:
pageData: any- Game datawidth: number- Minimap width in pixelsheight: number- Minimap height in pixelsclassName?: string
CancelButton
File: menus/src/components/CancelButton.tsx
Standard cancel/back button component.
Props:
onClick()- Click handlerlabel?: string- Button text (default: "X")className?: string
Notes:
Use in overlay headers (Options/Items/Skills/Equip/Status) to trigger
onHide(true)for a consistent close affordance.Use
cancel-button--smallto match tighter headers and list overlays.Use
cancel-button--cornerto overlap the modal corner without colliding with header controls.
KeyGrid
File: menus/src/components/KeyGrid.tsx
Keyboard grid for name input (used internally by InputName).
Props:
onKeySelected(char: string)- Called when key pressedhasFocus: booleanlocale?: string- Keyboard layout (default: "en_US")
Shop Components
ShopTradeList
File: menus/src/components/ShopTradeList.tsx Tutorial: Shop System
Buy/Sell item list with quantity controls.
Props:
mode: 'buy' | 'sell'- Trade modeitems: any[]- Items to displayhasFocus: booleanpageData: anyselectedItem: any- Currently highlighted itemonHighlight(item)- Called when selection changesonActivate(item, qty, mode)- Called on OK pressgetQty(item): number- Get item quantityincQty(item, delta?)- Increase quantitydecQty(item, delta?)- Decrease quantitycanAct(item, qty): boolean- Whether action is allowedgetUnitPrice(item): number- Price per unitgoldData: { value, unit, unitColor }- Player's gold info
Battle-Specific Components
BattleAtb
File: menus/src/views/battle/BattleAtb.tsx
ATB gauge display for Active Time Battle systems.
BattleLog
File: menus/src/views/battle/BattleLog.tsx
Scrolling combat log.
BattleParty
File: menus/src/views/battle/BattleParty.tsx
Battle party member status display.
BattleInput
File: menus/src/views/battle/BattleInput.tsx
Battle command menu (Attack, Skill, Guard, Item).
TargetCursor
File: menus/src/views/battle/TargetCursor.tsx
Visual cursor for target selection.
SubSelectionWindow
File: menus/src/views/battle/SubSelectionWindow.tsx
Skill/Item selection submenu during battle.
See Battle System Architecture for detailed battle component documentation.
Context Providers
InputContext
File: menus/src/components/InputContext.tsx Tutorial: InputContext
Global input handling provider. Access via useInputContext().
Methods:
addEventListener(id, mode, key, handler)- Register input handlerremoveEventListener(id)- Unregister handler
Modes:
'trigger'- Fire once per press'repeat'- Fire repeatedly while held
Usage Tips
MobX Observers
Many components are wrapped with observer() to react to game state changes. When using these components:
Ref Handles
Components that support skipping animations expose ref handles:
Focus Management
Components with hasFocus prop only accept input when focused:
Modal overlays should pass the parent hasFocus through to their Chooser (and gate cancel handlers on focus) so background menus stop consuming input when the overlay is open.
See Also
Tutorials - Detailed guides for key components
Battle System Architecture - Battle component deep dive
State Management - Best practices for component state
Last updated