#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum FavoriteLimit {
    Six,
    #[default]
    Twelve,
    TwentyFour,
}

impl FavoriteLimit {
    pub const ALL: &[Self] = &[Self::Six, Self::Twelve, Self::TwentyFour];

    #[must_use]
    pub fn value(self) -> usize {
        match self {
            Self::Six => 6,
            Self::Twelve => 12,
            Self::TwentyFour => 24,
        }
    }

    #[must_use]
    pub fn label(self) -> &'static str {
        match self {
            Self::Six => "6 Favorites",
            Self::Twelve => "12 Favorites",
            Self::TwentyFour => "24 Favorites",
        }
    }

    #[must_use]
    pub fn detail(self) -> &'static str {
        match self {
            Self::Six => "Keep the Favorites shelf compact.",
            Self::Twelve => "Default Favorites shelf capacity.",
            Self::TwentyFour => "Allow a larger cross-space Favorites shelf.",
        }
    }
}
