toolbar
Builds Avatar Button Checkbox CommandPalette ContextMenu DescriptionList Divider EmptyState Icon IconButton List Menu Popover ProgressBar SegmentedControl Tag Timeline Toolbar


The code that drew it
A still frame holds a repeating animation at its first frame and a one-shot at its last, because a still of a moving thing is not reproducible. Run the gallery to review motion.
fn toolbar(window: &mut Window, cx: &mut App) -> AnyElement {
if !cx.has_global::<SceneToolbar>() {
let overflow = cx.new(|cx| {
Menu::new("scene.toolbar.overflow", window, cx)
.trigger_icon(Icon::List)
.trigger_name("More actions")
});
cx.set_global(SceneToolbar { overflow });
}
let overflow = cx.global::<SceneToolbar>().overflow.clone();
let theme = cx.theme().clone();
stack(&theme)
.w(px(620.0))
.child(
Toolbar::new("scene.toolbar.editor")
.label("Editor actions")
.group(
"history",
[
ToolbarItem::new(
"editor.undo",
"Undo",
IconButton::new("scene.toolbar.undo", Icon::ArrowLeft, "Undo")
.ghost()
.small()
.on_click(|_, _| {}),
)
.icon(Icon::ArrowLeft)
.shortcut("cmd-z"),
ToolbarItem::new(
"editor.redo",
"Redo",
IconButton::new("scene.toolbar.redo", Icon::ArrowRight, "Redo")
.ghost()
.small()
.on_click(|_, _| {}),
)
.icon(Icon::ArrowRight),
],
)
.group(
"view",
[ToolbarItem::new(
"editor.view",
"View",
SegmentedControl::new("scene.toolbar.view")
.label("View")
.segments([
Segment::new("code", "Code"),
Segment::new("split", "Split"),
Segment::new("preview", "Preview"),
])
.selected("split")
.small()
.on_select(|_, _, _| {}),
)],
)
.spacer()
.group(
"publish",
[
ToolbarItem::new(
"editor.share",
"Share",
Button::new("scene.toolbar.share")
.label("Share")
.secondary()
.small()
.on_click(|_, _| {}),
)
.icon(Icon::Copy),
ToolbarItem::new(
"editor.publish",
"Publish",
Button::new("scene.toolbar.publish")
.label("Publish")
.primary()
.small()
.on_click(|_, _| {}),
)
.icon(Icon::ArchiveUp),
ToolbarItem::new(
"editor.archive",
"Archive",
Button::new("scene.toolbar.archive")
.label("Archive")
.secondary()
.small()
.on_click(|_, _| {}),
)
.icon(Icon::Archive)
.disabled(true),
],
)
.overflow_after(4)
.overflow_menu(overflow),
)
.child(div().child("The last two actions moved into the overflow menu."))
.into_any_element()
}