use crate::hooks::scroll::Scroll;
use crate::style::{BorderStyle, Color, Weight};
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Debug, Default)]
pub enum Dimension {
#[default]
Auto,
Cells(u16),
Percent(f32),
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum Anchor {
#[default]
Center,
TopLeft,
TopRight,
BottomLeft,
BottomRight,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum FlexDirection {
#[default]
Row,
Column,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum JustifyContent {
#[default]
Start,
End,
Center,
SpaceBetween,
SpaceAround,
SpaceEvenly,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum AlignItems {
#[default]
Stretch,
Start,
End,
Center,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum Overflow {
#[default]
Visible,
Clip,
Scroll,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum GradientDirection {
#[default]
Horizontal,
Vertical,
}
#[derive(Clone, PartialEq, Debug, Default)]
pub struct ViewProps {
pub flex_direction: FlexDirection,
pub justify_content: JustifyContent,
pub align_items: AlignItems,
pub flex_grow: f32,
pub gap: u16,
pub padding: u16,
pub margin: u16,
pub width: Dimension,
pub height: Dimension,
pub border_style: BorderStyle,
pub border_color: Color,
pub background: Color,
pub background_gradient: Option<(Color, Color, GradientDirection)>,
pub overflow: Overflow,
pub scroll: Option<Scroll>,
pub overlay: Option<Anchor>,
}
#[non_exhaustive]
#[derive(Clone, Copy, PartialEq, Eq, Debug, Default)]
pub enum TextWrap {
#[default]
Wrap,
Truncate,
}
#[derive(Clone, PartialEq, Debug, Default)]
pub struct TextProps {
pub content: String,
pub color: Color,
pub weight: Weight,
pub wrap: TextWrap,
pub color_gradient: Option<(Color, Color)>,
}