Skip to main content

showcase/pages/
surfaces.rs

1use material::widget::page;
2use material_ui_rs as material;
3
4use super::super::{INVENTORY_ROWS, InventoryRow, Message};
5
6pub(super) fn view() -> material::Element<'static, Message> {
7    page::sections([
8        page::section("Cards", cards()).into(),
9        page::section("Lists", lists()).into(),
10        page::section("Data table", data_table()).into(),
11    ])
12    .into()
13}
14
15fn cards() -> material::Element<'static, Message> {
16    page::compact_stack([
17        page::card(material::widget::card::elevated, "Elevated", "Level 1").into(),
18        page::card(material::widget::card::filled, "Filled", "Container").into(),
19        page::card(material::widget::card::outlined, "Outlined", "1px stroke").into(),
20    ])
21    .into()
22}
23
24fn lists() -> material::Element<'static, Message> {
25    material::widget::list::group([
26        material::widget::list::one_line_with_leading_icon("info", "One-line list item").into(),
27        material::widget::list::two_line_with_trailing("Messages", "Supporting text", "24").into(),
28        material::widget::list::three_line("Three-line item", "Supporting text", "Second line")
29            .into(),
30    ])
31    .into()
32}
33
34fn data_table() -> material::Element<'static, Message> {
35    material::widget::data_table::standard(
36        [
37            material::widget::data_table::weighted_column(2, "Component", |row: InventoryRow| {
38                row.component
39            }),
40            material::widget::data_table::column("State", |row: InventoryRow| row.status),
41            material::widget::data_table::compact_numeric_column("Count", |row: InventoryRow| {
42                row.count.to_string()
43            }),
44        ],
45        INVENTORY_ROWS,
46    )
47    .into()
48}