initial commit
This commit is contained in:
34
src/component/font_icon.rs
Normal file
34
src/component/font_icon.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
use gpui::{Styled, svg};
|
||||
use paste::paste;
|
||||
|
||||
use crate::app;
|
||||
|
||||
macro_rules! define_font_icons {
|
||||
($($name:ident),+ $(,)?) => {
|
||||
paste! {
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
||||
pub enum FontIcon {
|
||||
$($name),+
|
||||
}
|
||||
|
||||
pub const fn icon_path(icon: FontIcon) -> &'static str {
|
||||
match icon {
|
||||
$(
|
||||
FontIcon::$name => concat!(
|
||||
"asset/font_icon/",
|
||||
stringify!([<$name:snake>]),
|
||||
".svg"
|
||||
),
|
||||
)+
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
define_font_icons!(ChevronDown, FolderGit);
|
||||
|
||||
pub fn font_icon<T>(icon: FontIcon, cx: &gpui::Context<T>) -> gpui::Svg {
|
||||
let theme = cx.global::<app::Global>().current_theme;
|
||||
svg().path(icon_path(icon)).text_color(theme.colors.text)
|
||||
}
|
||||
Reference in New Issue
Block a user