// 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.