diff --git a/crates/ezidam/src/icons.rs b/crates/ezidam/src/icons.rs
new file mode 100644
index 0000000..54dd74f
--- /dev/null
+++ b/crates/ezidam/src/icons.rs
@@ -0,0 +1,59 @@
+use rocket_dyn_templates::tera::Tera;
+
+pub struct Icon {
+ /// Lowercase name of icon
+ name: &'static str,
+ /// Find icons on https://tabler-icons.io
+ pub svg: &'static str,
+}
+
+/// Macro to generate icons
+///
+/// # Arguments
+///
+/// * `name` - Name of icon in lowercase
+/// * `cap_name` - Capitalized name of icon
+/// * `svg` - Icon in svg
+macro_rules! icons {
+ ($($name:expr, $cap_name:ident, $svg:expr),+) => {
+ $(
+ #[allow(non_upper_case_globals)]
+ pub const $cap_name: Icon = Icon {
+ name: $name,
+ svg: $svg,
+ };
+ )+
+ };
+}
+
+impl Icon {
+ icons! {
+ "home", Home, r#""#,
+ "logout", Logout, r#""#,
+ "settings", Settings, r#""#,
+ "apps", Apps, r#"