# UI Components and Layout

The application uses a modular component architecture, leveraging the **MudBlazor** library for UI elements.

## Reusable Components (`Components` project)

Shared components are located in the `Components` project, categorized by their function:

- **Display**: Components for visualizing data (e.g., `EntityIcon`, `StatDisplay`).
- **Inputs**: Specialized input fields for game data.
- **Layout**: Reusable layout sections like `FooterComponent`.
- **Navigation**: Components like `SearchButtonComponent` and `NavigationTracker`.
- **Feedback**: UI elements for user interactions like `ConfirmationDialog`.

## Key Layout Files

- **App.razor**: Configures the Blazor router and hosts global "Portals". Portals are components that stay active across all pages (e.g., `EntityDialogPortal`, `ToastPortal`).
- **PageLayout.razor**: The standard layout for all pages. It includes:
  - `MudAppBar`: The top navigation bar.
  - `MudDrawer`: A side navigation menu (primarily for mobile/small screens).
  - `MudMainContent`: The area where page-specific content is rendered.

## Design Patterns

- **Portals**: Used for dialogs and notifications to ensure they are rendered correctly in the DOM hierarchy regardless of which page is active. They listen to events from their corresponding services (e.g., `EntityDialogService`).
- **Data-Driven UI**: Navigation links and unit lists are driven by static data classes in the `Model` project (e.g., `WebsiteData.GetPages()`), making it easy to add new sections.
- **Dark Mode**: The site is designed primarily for dark mode, managed via `MudThemeProvider`.
