summaryrefslogtreecommitdiff
path: root/src/types/mod.rs
blob: 09b0f074b87f3a28beaaf938bb89bb38f9fa44b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use std::path::PathBuf;

use iced::{
    alignment::{Horizontal, Vertical},
    widget::{text::Shaping, text_editor},
    Alignment, ContentFit, Font, Length,
};

pub struct DesignerState {
    pub designer_content: Vec<RenderedElement>,
    pub designer_page: DesignerPage,
}

pub struct RenderedElement {
    pub id: String,
    pub children: Option<Vec<RenderedElement>>,
    pub name: ElementName,
    pub props: Props,
}

pub enum ElementName {
    Text(String),
    Button(String),
    TextEditor(text_editor::Content),
    SVG(PathBuf),
    Image(PathBuf),
    Container,
    Row,
    Column,
}

pub struct Props {
    pub align_items: Option<Alignment>,
    pub align_x: Option<Horizontal>,
    pub align_y: Option<Vertical>,
    pub horizontal_alignment: Option<Horizontal>,
    pub vertical_alignment: Option<Vertical>,
    pub height: Option<Length>,
    pub width: Option<Length>,
    pub font: Option<Font>,
    pub padding: Option<i32>,
    pub spacing: Option<i32>,
    pub content_fit: Option<ContentFit>,
    pub shaping: Option<Shaping>,
}

pub enum DesignerPage {
    Designer,
    CodeView,
}