diff --git a/psst-gui/src/ui/mod.rs b/psst-gui/src/ui/mod.rs index ac248b10..61effda4 100644 --- a/psst-gui/src/ui/mod.rs +++ b/psst-gui/src/ui/mod.rs @@ -393,15 +393,41 @@ fn route_widget() -> impl Widget { fn sidebar_menu_widget() -> impl Widget { Flex::column() .with_default_spacer() - .with_child(sidebar_link_widget("Home", Nav::Home)) - .with_child(sidebar_link_widget("Tracks", Nav::SavedTracks)) - .with_child(sidebar_link_widget("Albums", Nav::SavedAlbums)) - .with_child(sidebar_link_widget("Podcasts", Nav::Shows)) + .with_child(sidebar_link_widget("Home", Some(&icons::HOME), Nav::Home)) + .with_child(sidebar_link_widget( + "Tracks", + Some(&icons::MUSIC_NOTE), + Nav::SavedTracks, + )) + .with_child(sidebar_link_widget( + "Albums", + Some(&icons::ALBUM), + Nav::SavedAlbums, + )) + .with_child(sidebar_link_widget( + "Podcasts", + Some(&icons::PODCAST), + Nav::Shows, + )) .with_child(search::input_widget().padding((theme::grid(1.0), theme::grid(1.0)))) } -fn sidebar_link_widget(title: &str, link_nav: Nav) -> impl Widget { - Label::new(title) +fn sidebar_link_widget( + title: &str, + icon: Option<&icons::SvgIcon>, + link_nav: Nav, +) -> impl Widget { + Flex::row() + .with_child( + icon.map(|i| { + i.scale((18.0, 18.0)) + .padding_right(theme::grid(1.0)) + .boxed() + }) + .unwrap_or_else(|| Empty.boxed()), + ) + .with_child(Label::new(title)) + .with_flex_spacer(1.0) .padding((theme::grid(2.0), theme::grid(1.0))) .expand_width() .link()