Skip to main content

minimal_native/
minimal_native.rs

1use operad::{root_style, ColorRgba, LayoutStyle, TextStyle, UiDocument, UiNode, UiSize, UiVisual};
2
3fn main() -> operad::native::NativeWindowResult {
4    operad::native::run("Minimal Operad", minimal_document)
5}
6
7fn minimal_document(viewport: UiSize) -> UiDocument {
8    let mut ui = UiDocument::new(root_style(viewport.width, viewport.height));
9    let panel = ui.add_child(
10        ui.root(),
11        UiNode::container(
12            "app.panel",
13            LayoutStyle::column()
14                .with_size(360.0, 120.0)
15                .with_padding(20.0)
16                .with_gap(8.0),
17        )
18        .with_visual(UiVisual::panel(ColorRgba::new(24, 29, 36, 255), None, 6.0)),
19    );
20    ui.add_child(
21        panel,
22        UiNode::text(
23            "app.title",
24            "Hello from Operad",
25            TextStyle {
26                font_size: 22.0,
27                line_height: 30.0,
28                color: ColorRgba::WHITE,
29                ..TextStyle::default()
30            },
31            LayoutStyle::size(320.0, 34.0),
32        ),
33    );
34    ui.add_child(
35        panel,
36        UiNode::text(
37            "app.subtitle",
38            "This app uses the default native runtime.",
39            TextStyle::default(),
40            LayoutStyle::size(320.0, 28.0),
41        ),
42    );
43    ui
44}