prelude.rs

 1pub use gpui::{
 2    div, Component, Element, ElementId, InteractiveElement, ParentElement, SharedString, Styled,
 3    ViewContext, WindowContext,
 4};
 5
 6pub use crate::StyledExt;
 7pub use crate::{ButtonVariant, Color};
 8pub use theme2::ActiveTheme;
 9
10use strum::EnumIter;
11
12#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, EnumIter)]
13pub enum IconSide {
14    #[default]
15    Left,
16    Right,
17}
18
19#[derive(Debug, PartialEq, Eq, Clone, Copy, EnumIter)]
20pub enum OverflowStyle {
21    Hidden,
22    Wrap,
23}
24
25#[derive(Default, PartialEq, Copy, Clone, EnumIter, strum::Display)]
26pub enum InteractionState {
27    #[default]
28    Enabled,
29    Hovered,
30    Active,
31    Focused,
32    Disabled,
33}
34
35impl InteractionState {
36    pub fn if_enabled(&self, enabled: bool) -> Self {
37        if enabled {
38            *self
39        } else {
40            InteractionState::Disabled
41        }
42    }
43}
44
45#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, Copy)]
46pub enum Selection {
47    #[default]
48    Unselected,
49    Indeterminate,
50    Selected,
51}
52
53impl Selection {
54    pub fn inverse(&self) -> Self {
55        match self {
56            Self::Unselected | Self::Indeterminate => Self::Selected,
57            Self::Selected => Self::Unselected,
58        }
59    }
60}