//! ContentCardItem trait for unified content rendering
//!
//! This trait defines the interface that all content types must implement
//! to be rendered by the UnifiedContentCard component.

/// Trait for items that can be displayed in a content card
pub trait ContentCardItem {
    /// Get the unique identifier/slug for the content
    fn slug(&self) -> &str;

    /// Get the title of the content
    fn title(&self) -> &str;

    /// Get the excerpt/summary of the content, if available
    fn excerpt(&self) -> Option<&str>;

    /// Get the publication date, if available
    fn date(&self) -> Option<&str>;

    /// Get the author, if available
    fn author(&self) -> Option<&str>;

    /// Get the category, if available
    fn category(&self) -> Option<&str>;

    /// Get the tags associated with the content
    fn tags(&self) -> &[String];

    /// Check if the content is featured
    fn featured(&self) -> bool;

    /// Get the estimated read time, if available
    fn read_time(&self) -> Option<&str>;

    /// Get the content type key (from content-kinds.toml)
    fn content_type_key(&self) -> &str;
}
