Skip to content

refactor: extract common ratatui widgets into reusable components #191

@unhappychoice

Description

@unhappychoice

Current State

Multiple screens use similar ratatui widgets with repeated code patterns. Analysis shows common widgets used across:

  • src/game/screens/analytics_screen.rs - Uses Block, Borders, List, ListItem, etc.
  • src/game/screens/history_screen.rs - Similar widget patterns
  • src/game/screens/session_detail_screen.rs - Overlapping widget usage

Common Patterns Identified

  • Block with Borders styling
  • List with ListItem creation
  • Scrollbar with ScrollbarState
  • Layout configurations
  • Color and Style applications

Proposed Solution

Create a new module for common widgets:

  • src/game/widgets/mod.rs - Main widgets module
  • src/game/widgets/common_blocks.rs - Reusable Block components
  • src/game/widgets/lists.rs - Common List patterns
  • src/game/widgets/layouts.rs - Standard layout configurations

Benefits

  • Reduced code duplication
  • Consistent widget styling across screens
  • Easier maintenance and updates
  • Better separation of concerns

Implementation Steps

  1. Identify exact common patterns
  2. Create widget abstraction functions
  3. Update existing screens to use common widgets
  4. Add proper documentation and examples

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions