use gpui::{BoxShadow, Hsla};
use crate::{paint, theme::Theme};
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum Selection {
#[default]
None,
Emphasized,
Unemphasized,
}
impl Selection {
pub fn new(selected: bool, emphasized: bool) -> Self {
match (selected, emphasized) {
(false, _) => Self::None,
(true, true) => Self::Emphasized,
(true, false) => Self::Unemphasized,
}
}
pub fn is_selected(self) -> bool {
self != Self::None
}
pub fn fill(self, theme: &Theme) -> Option<Hsla> {
match self {
Self::None => None,
Self::Emphasized => Some(theme.card_selected_bg()),
Self::Unemphasized => Some(theme.element_hover),
}
}
pub fn shadows(self) -> Vec<BoxShadow> {
match self {
Self::Emphasized => paint::glass_selected_shadows(),
Self::None | Self::Unemphasized => Vec::new(),
}
}
}