From f5fee63a1543d8e99458330aaeb33438286a0d32 Mon Sep 17 00:00:00 2001
From: Philippe Loctaux
Date: Thu, 30 Mar 2023 23:40:34 +0200
Subject: [PATCH] ezidam: icons: moved to own module, macro to generate struct
constants, ability to use as tera templates
---
crates/ezidam/src/icons.rs | 59 +++++++++++++++++++++++++++
crates/ezidam/src/lib.rs | 7 +++-
crates/ezidam/src/menu.rs | 1 -
crates/ezidam/src/menu/icons.rs | 5 ---
crates/ezidam/src/menu/items/admin.rs | 11 ++---
crates/ezidam/src/menu/items/user.rs | 5 ++-
6 files changed, 74 insertions(+), 14 deletions(-)
create mode 100644 crates/ezidam/src/icons.rs
delete mode 100644 crates/ezidam/src/menu/icons.rs
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#"