use waterui::component::{IntoLabel, Label};
use waterui::widget::Divider;
use waterui_controls::menu::{Command, CommandBuilder, Menu, MenuItem, MenuView};
pub type MaterialMenu = Menu;
pub type MaterialMenuItem = MenuItem;
pub type MaterialMenuCommand = Command;
pub type MaterialMenuItemBuilder = CommandBuilder;
#[must_use]
pub fn material_menu(label: impl IntoLabel, items: impl MenuView) -> MaterialMenu {
Menu::new(label, items)
}
#[must_use]
pub fn material_menu_item(label: impl IntoLabel) -> MaterialMenuItemBuilder {
Command::builder(label)
}
#[must_use]
pub fn material_sub_menu(label: impl IntoLabel, items: impl MenuView) -> MaterialMenu {
Menu::new(label, items)
}
pub const fn material_menu_divider() -> Divider {
Divider
}
#[must_use]
pub fn material_menu_icon_label(label: impl Into<Label>) -> Label {
label.into().icon_only()
}
#[cfg(test)]
mod tests {
use crate::layout::menu::text_context_metrics;
#[test]
fn material_menu_tokens_match_compose_menu_tokens() {
let metrics = text_context_metrics();
assert_eq!(metrics.row_height, 48.0);
assert_eq!(metrics.min_width, 112.0);
assert_eq!(metrics.max_width, 280.0);
assert_eq!(metrics.corner_radius, 4.0);
assert_eq!(metrics.separator_thickness, 1.0);
}
}