use serde::{Deserialize, Serialize};

///
#[derive(Clone, PartialEq, Deserialize, Serialize)]
pub struct Legend
{
   /// A link to the adventurer's profile (e.g., personal website, GitHub,
   /// etc.).
   pub profile: String,

   /// A URL or path to an image representing the adventurer (e.g., avatar or
   /// portrait).
   pub image: String,

   /// A short descriptive text or tagline about the adventurer.
   pub blurb: String
}

/// Represents an author or contributor of a tale.
///
/// An `Adventurer` contains identifying and descriptive information
/// such as their name, handle, profile URL, image, and a short blurb.
#[derive(Clone, PartialEq, Deserialize, Serialize)]
pub struct Adventurer
{
   /// The full name of the adventurer.
   pub name: String,

   /// A unique handle or username for the adventurer (e.g., used in URLs or
   /// mentions).
   pub handle: String,

   ///
   #[serde(flatten)]
   pub legend: Legend
}
