fission_command_ui/publish/widgets/
app.rs1use 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}