showcase/pages/
navigation.rs1use material::widget::page;
2use material_ui_rs as material;
3
4use super::super::{Message, NAV_DESTINATIONS, Showcase, TabChoice};
5
6pub(super) fn view(state: &Showcase) -> material::Element<'_, Message> {
7 let selection = state.navigation_selection();
8 let bar = material::widget::navigation::navigation_bar(
9 &NAV_DESTINATIONS,
10 selection,
11 Message::Navigate,
12 );
13 let rail = material::widget::navigation::navigation_rail_with_menu_fitting_content(
14 &NAV_DESTINATIONS,
15 selection,
16 Message::Navigate,
17 Message::MenuPressed,
18 );
19 let expanded_rail =
20 material::widget::navigation::navigation_rail_expanded_with_menu_fitting_content(
21 "Showcase",
22 &NAV_DESTINATIONS,
23 selection,
24 Message::Navigate,
25 Message::MenuPressed,
26 );
27
28 page::sections([
29 page::section("Tabs", tabs(state)).into(),
30 page::section("Navigation bar", bar).into(),
31 page::section("Navigation rail with menu", rail).into(),
32 page::section("Expanded navigation rail", expanded_rail).into(),
33 ])
34 .into()
35}
36
37fn tabs(state: &Showcase) -> material::Element<'_, Message> {
38 page::component_stack([
39 material::widget::tabs::animated_primary_icon_label_bar(
40 &state.primary_tab_state,
41 [
42 (
43 "input",
44 "Inputs",
45 Message::PrimaryTabSelected(TabChoice::Inputs),
46 ),
47 (
48 "tune",
49 "Controls",
50 Message::PrimaryTabSelected(TabChoice::Controls),
51 ),
52 (
53 "info",
54 "Feedback",
55 Message::PrimaryTabSelected(TabChoice::Feedback),
56 ),
57 ],
58 )
59 .into(),
60 material::widget::tabs::animated_secondary_label_bar(
61 &state.secondary_tab_state,
62 [
63 ("Overview", Message::SecondaryTabSelected(TabChoice::Inputs)),
64 (
65 "Details",
66 Message::SecondaryTabSelected(TabChoice::Controls),
67 ),
68 (
69 "History",
70 Message::SecondaryTabSelected(TabChoice::Feedback),
71 ),
72 ],
73 )
74 .into(),
75 ])
76 .into()
77}