use iced::Element;
#[derive(Debug, Clone, Copy)]
pub(crate) enum Icon {
FolderClosed,
FolderOpen,
File,
Error,
CaretRight,
CaretDown,
}
pub(crate) fn render<'a, Message: 'a>(icon: Icon) -> Element<'a, Message> {
#[cfg(feature = "icons")]
{
render_lucide(icon)
}
#[cfg(not(feature = "icons"))]
{
render_text(icon)
}
}
#[cfg(not(feature = "icons"))]
fn render_text<'a, Message: 'a>(icon: Icon) -> Element<'a, Message> {
use iced::widget::text;
let s = match icon {
Icon::FolderClosed => "\u{1F4C1}", Icon::FolderOpen => "\u{1F4C2}", Icon::File => "\u{1F4C4}", Icon::Error => "\u{26A0}", Icon::CaretRight => "\u{25B8}", Icon::CaretDown => "\u{25BE}", };
text(s).size(14).into()
}
#[cfg(feature = "icons")]
fn render_lucide<'a, Message: 'a>(icon: Icon) -> Element<'a, Message> {
use lucide_icons::iced::{
icon_alert_circle, icon_chevron_down, icon_chevron_right, icon_file, icon_folder,
icon_folder_open,
};
let size = 14.0_f32;
match icon {
Icon::FolderClosed => icon_folder().size(size).into(),
Icon::FolderOpen => icon_folder_open().size(size).into(),
Icon::File => icon_file().size(size).into(),
Icon::Error => icon_alert_circle().size(size).into(),
Icon::CaretRight => icon_chevron_right().size(size).into(),
Icon::CaretDown => icon_chevron_down().size(size).into(),
}
}