//! Immediate-mode UI system for in-game interfaces.
//!
//! Provides a custom immediate-mode UI independent of egui, designed for game HUDs and
//! tool panels. Supports dockable panels, menus, tabs, scroll areas, and standard widgets.
//!
//! - [`ImmediateUi`]: Main UI context accessed via `immediate_ui()` method
//! - [`Rect`]: 2D rectangle for layout and hit testing
//! - [`UiStyle`]: Colors, padding, and font sizes
//!
//! # Enabling the UI System
//!
//! The immediate UI requires `world.resources.user_interface.enabled = true`:
//!
//! ```ignore
//! fn initialize(&mut self, world: &mut World) {
//!     world.resources.user_interface.enabled = true;
//! }
//! ```
//!
//! # Basic Panel Layout
//!
//! Implement the `immediate_ui()` method on your State:
//!
//! ```ignore
//! fn immediate_ui(&mut self, ui: &mut ImmediateUi, world: &mut World) {
//!     // Docked panel on the left
//!     ui.begin_left_panel("Tools", 250.0);
//!     if ui.button("New").clicked {
//!         // Handle click
//!     }
//!     ui.end_panel();
//!
//!     // Floating panel
//!     ui.begin_panel("Properties", Rect::new(400.0, 100.0, 300.0, 400.0));
//!     ui.label("Selected: None");
//!     ui.end_panel();
//! }
//! ```
//!
//! # Panel Types
//!
//! | Method | Description |
//! |--------|-------------|
//! | `begin_left_panel()` | Docked to left edge |
//! | `begin_right_panel()` | Docked to right edge |
//! | `begin_top_panel()` | Docked to top edge |
//! | `begin_bottom_panel()` | Docked to bottom edge |
//! | `begin_central_panel()` | Fills remaining space |
//! | `begin_panel()` | Floating, draggable panel |
//!
//! # Menus
//!
//! Menus return `Option<usize>` with the selected item index:
//!
//! ```ignore
//! if let Some(index) = ui.menu("File", &["New", "Open", "Save", "Exit"]) {
//!     match index {
//!         0 => { /* New */ }
//!         1 => { /* Open */ }
//!         2 => { /* Save */ }
//!         3 => { /* Exit */ }
//!         _ => {}
//!     }
//! }
//! ```
//!
//! # Tabs
//!
//! ```ignore
//! self.active_tab = ui.tabs(&["Scene", "Assets", "Console"], self.active_tab);
//! match self.active_tab {
//!     0 => { /* Scene content */ }
//!     1 => { /* Assets content */ }
//!     2 => { /* Console content */ }
//!     _ => {}
//! }
//! ```
//!
//! # Scroll Areas
//!
//! ```ignore
//! ui.begin_scroll_area("items_scroll", 200.0); // 200px height
//! for item in &self.items {
//!     ui.label(item);
//! }
//! ui.end_scroll_area();
//! ```
//!
//! # Available Widgets
//!
//! | Widget | Description |
//! |--------|-------------|
//! | `label()` | Static text |
//! | `button()` | Clickable button, returns `UiResponse` |
//! | `checkbox()` | Toggle checkbox |
//! | `slider()` | Horizontal value slider |
//! | `text_field()` | Single-line text input |
//! | `dropdown()` | Selection dropdown |
//! | `progress_bar()` | Progress indicator |
//! | `horizontal()` / `end_horizontal()` | Horizontal layout |
//! | `spacing()` | Add vertical space |
//!
//! # Input Handling
//!
//! ```ignore
//! let response = ui.button("Click Me");
//! if response.clicked {
//!     // Button was clicked
//! }
//! if response.hovered {
//!     // Mouse is over button
//! }
//! ```
//!
//! [`ImmediateUi`]: immediate::ImmediateUi
//! [`Rect`]: types::Rect

pub mod immediate;
pub mod layout;
pub mod resources;
pub mod theme;
pub mod types;

pub use immediate::*;
pub use layout::*;
pub use resources::*;
pub use theme::*;
pub use types::*;
