use alloc::string::String;
use thiserror::Error;
use crate::shared::{StyleClass, style_class::StyleProperty};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Error)]
pub enum StyleClassError {
#[error("Style class name cannot be empty.")]
EmptyName,
#[error("Duplicate style class: `{0}`")]
DuplicateClass(String),
#[error("Duplicate property found: `{0}`")]
DuplicateProperty(StyleProperty),
#[error("Unknown style class: `{}`", .0.name())]
UnknownClass(StyleClass),
#[error("Style class name is missing.")]
MissingName,
#[error("Style class properties are missing.")]
MissingProperties,
}