1#[derive(Debug, Clone, Copy)]
2pub enum Display {
3 Flex { flex_direction: FlexDirection },
4 Block,
5 None,
6}
7
8impl Default for Display {
9 fn default() -> Self {
10 Display::Flex {
11 flex_direction: FlexDirection::Column,
12 }
13 }
14}
15
16#[derive(Debug, Clone, Copy, Default)]
17pub enum FlexDirection {
18 Row,
19 #[default]
20 Column,
21}
22
23#[derive(Debug, Clone, Copy, Default)]
24pub struct ItemStyle {
25 pub flex_grow: f32,
26 pub flex_basis: Option<f32>,
27 pub align_self: Option<AlignItems>,
28}
29
30#[derive(Debug, Clone, Copy, Default)]
31pub struct SizeStyle {
32 pub width: Option<f32>,
33 pub height: Option<f32>,
34 pub min_width: Option<f32>,
35 pub max_width: Option<f32>,
36 pub min_height: Option<f32>,
37 pub max_height: Option<f32>,
38}
39
40#[derive(Debug, Clone, Copy, Default)]
41pub struct Spacing {
42 pub margin_top: f32,
43 pub margin_bottom: f32,
44 pub margin_left: f32,
45 pub margin_right: f32,
46 pub padding_top: f32,
47 pub padding_bottom: f32,
48 pub padding_left: f32,
49 pub padding_right: f32,
50}
51
52#[derive(Debug, Clone, Copy, Default)]
53pub enum JustifyContent {
54 #[default]
55 Start,
56 Center,
57 End,
58 SpaceBetween,
59 SpaceAround,
60 SpaceEvenly,
61}
62
63#[derive(Debug, Clone, Copy, Default)]
64pub enum AlignItems {
65 Start,
66 Center,
67 End,
68 #[default]
69 Stretch,
70}
71
72#[derive(Debug, Clone, Copy, Default)]
73pub struct Style {
74 pub display: Display,
75 pub item_style: ItemStyle,
76 pub size: SizeStyle,
77 pub spacing: Spacing,
78
79 pub justify_content: JustifyContent,
80 pub align_items: AlignItems,
81 pub column_gap: f32,
82 pub row_gap: f32,
83}