Skip to main content

fission_command_ui/publish/widgets/
app.rs

1use super::boards::PublishBoardCanvas;
2use super::chrome::{PublishFooter, PublishHeader};
3use super::config_editor::FissionTomlEditorPanel;
4use super::*;
5
6#[derive(Clone)]
7pub struct PublishApp;
8
9impl From<PublishApp> for Widget {
10    fn from(_component: PublishApp) -> Widget {
11        let (_ctx, view) = fission::build::current::<PublishUiState>();
12        let size = view.env().viewport_size;
13        let palette = PublishPalette::for_mode(view.state().theme_mode);
14        let layout = PublishLayout::from_viewport(size);
15        let main: Widget = if view.state().config_editor.is_some() {
16            FissionTomlEditorPanel { layout }.into()
17        } else {
18            PublishBoardCanvas { layout }.into()
19        };
20        let body = Column {
21            gap: Some(layout.gap),
22            children: widgets![PublishHeader { layout }, main, PublishFooter { layout },],
23            ..Default::default()
24        };
25        Container::new(body)
26            .width(size.width)
27            .height(size.height)
28            .padding([
29                layout.root_padding,
30                layout.root_padding,
31                layout.root_padding,
32                layout.root_padding,
33            ])
34            .bg(palette.background)
35            .into()
36    }
37}