windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation
// Core traits for windjammer-ui components
// These traits enable type-safe, generic component composition

use super::vnode::VNode

// ============================================================================
// Rendering Traits
// ============================================================================

/// Trait for components that can be rendered to HTML strings (legacy)
/// Use RenderableVNode for new cross-platform components
pub trait Renderable {
    fn render(self) -> string
}

/// Trait for components that can be rendered to VNodes (cross-platform)
/// VNodes can be rendered to:
/// - HTML (for web via simple_renderer)
/// - egui (for desktop via desktop_renderer)
///
/// This is the preferred trait for new components.
pub trait RenderableVNode {
    fn to_vnode(&self) -> VNode
}

// ============================================================================
// Component Lifecycle Traits (future)
// ============================================================================

// Note: Additional traits like HasChildren, HasText, and HasStyle
// will be added once Windjammer supports generic parameters in trait methods.
// For now, we use the Renderable trait with generic impl methods.