use sequoia_ui::prelude::*;
fn pane(title: &str, body: &str, icon_name: &str, accent: Color) -> impl View {
Column::new()
.fill_size()
.padding(16.0)
.gap(8.0)
.child(
Row::new()
.gap(8.0)
.child(Icon::new(icon_name).size(16.0).color(accent))
.child(Text::new(title).size(15.0).bold()),
)
.child(Text::new(body).size(13.0))
}
fn main() {
let outer_split = Signal::new(0.30);
let inner_split = Signal::new(0.65);
let sidebar = pane(
"Explorer",
"src/\n main.rs\ntests/\nexamples/\nCargo.toml\nREADME.md",
"folder",
Color::hex(0x3584E4),
);
let editor = pane(
"Editor",
"fn main() {\n println!(\"hello, sequoia\");\n}",
"file",
Color::hex(0x26A269),
);
let terminal = pane(
"Terminal",
"$ cargo run --example split_panel\n\nDrag a divider to resize.",
"play",
Color::hex(0xE5A50A),
);
let right = SplitPanel::new(inner_split)
.vertical()
.min_pane(80.0)
.first(editor)
.second(terminal);
let root = SplitPanel::new(outer_split)
.horizontal()
.min_first(140.0)
.min_second(240.0)
.handle_width(7.0)
.handle_color(Color::hex(0x3A3A3A))
.handle_active_color(Color::hex(0x3584E4))
.first(sidebar)
.second(right);
App::new()
.title("SplitPanel demo")
.size(900.0, 600.0)
.root(root)
.run()
.expect("event loop failed");
}