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}