pub const ICON_HOME: char = '\u{E88A}';
pub const ICON_MENU: char = '\u{E5D2}';
pub const ICON_MORE_VERT: char = '\u{E5D4}';
pub const ICON_MORE_HORIZ: char = '\u{E5D3}';
pub const ICON_ARROW_BACK: char = '\u{E5C4}';
pub const ICON_ARROW_FORWARD: char = '\u{E5C8}';
pub const ICON_ARROW_UPWARD: char = '\u{E5D8}';
pub const ICON_ARROW_DOWNWARD: char = '\u{E5DB}';
pub const ICON_CLOSE: char = '\u{E5CD}';
pub const ICON_CHECK: char = '\u{E5CA}';
pub const ICON_EXPAND_MORE: char = '\u{E5CF}';
pub const ICON_EXPAND_LESS: char = '\u{E5CE}';
pub const ICON_CHEVRON_LEFT: char = '\u{E5CB}';
pub const ICON_CHEVRON_RIGHT: char = '\u{E5CC}';
pub const ICON_ADD: char = '\u{E145}';
pub const ICON_REMOVE: char = '\u{E15B}';
pub const ICON_DELETE: char = '\u{E872}';
pub const ICON_EDIT: char = '\u{E3C9}';
pub const ICON_SAVE: char = '\u{E161}';
pub const ICON_SEARCH: char = '\u{E8B6}';
pub const ICON_REFRESH: char = '\u{E5D5}';
pub const ICON_SETTINGS: char = '\u{E8B8}';
pub const ICON_HELP: char = '\u{E887}';
pub const ICON_INFO: char = '\u{E88E}';
pub const ICON_SHARE: char = '\u{E80D}';
pub const ICON_DOWNLOAD: char = '\u{F090}';
pub const ICON_UPLOAD: char = '\u{F09B}';
pub const ICON_PRINT: char = '\u{E8AD}';
pub const ICON_CONTENT_COPY: char = '\u{E14D}';
pub const ICON_CONTENT_PASTE: char = '\u{E14F}';
pub const ICON_CONTENT_CUT: char = '\u{E14E}';
pub const ICON_UNDO: char = '\u{E166}';
pub const ICON_REDO: char = '\u{E15A}';
pub const ICON_CHECK_BOX: char = '\u{E834}';
pub const ICON_CHECK_BOX_OUTLINE_BLANK: char = '\u{E835}';
pub const ICON_RADIO_BUTTON_CHECKED: char = '\u{E837}';
pub const ICON_RADIO_BUTTON_UNCHECKED: char = '\u{E836}';
pub const ICON_TOGGLE_ON: char = '\u{E9F6}';
pub const ICON_TOGGLE_OFF: char = '\u{E9F5}';
pub const ICON_STAR: char = '\u{E838}';
pub const ICON_STAR_BORDER: char = '\u{E83A}';
pub const ICON_FAVORITE: char = '\u{E87D}';
pub const ICON_FAVORITE_BORDER: char = '\u{E87E}';
pub const ICON_VISIBILITY: char = '\u{E8F4}';
pub const ICON_VISIBILITY_OFF: char = '\u{E8F5}';
pub const ICON_ERROR: char = '\u{E000}';
pub const ICON_WARNING: char = '\u{E002}';
pub const ICON_CHECK_CIRCLE: char = '\u{E86C}';
pub const ICON_CANCEL: char = '\u{E5C9}';
pub const ICON_BLOCK: char = '\u{E14B}';
pub const ICON_NOTIFICATIONS: char = '\u{E7F4}';
pub const ICON_NOTIFICATIONS_OFF: char = '\u{E7F6}';
pub const ICON_FOLDER: char = '\u{E2C7}';
pub const ICON_FOLDER_OPEN: char = '\u{E2C8}';
pub const ICON_DESCRIPTION: char = '\u{E873}';
pub const ICON_IMAGE: char = '\u{E3F4}';
pub const ICON_VIDEOCAM: char = '\u{E04B}';
pub const ICON_MUSIC_NOTE: char = '\u{E405}';
pub const ICON_LINK: char = '\u{E157}';
pub const ICON_ATTACH_FILE: char = '\u{E226}';
pub const ICON_PERSON: char = '\u{E7FD}';
pub const ICON_GROUP: char = '\u{E7EF}';
pub const ICON_ACCOUNT_CIRCLE: char = '\u{E853}';
pub const ICON_PERSON_ADD: char = '\u{E7FE}';
pub const ICON_LOGIN: char = '\u{EA77}';
pub const ICON_LOGOUT: char = '\u{E9BA}';
pub const ICON_EMAIL: char = '\u{E0BE}';
pub const ICON_CHAT: char = '\u{E0B7}';
pub const ICON_MESSAGE: char = '\u{E0C9}';
pub const ICON_PHONE: char = '\u{E0CD}';
pub const ICON_SEND: char = '\u{E163}';
pub const ICON_PLAY_ARROW: char = '\u{E037}';
pub const ICON_PAUSE: char = '\u{E034}';
pub const ICON_STOP: char = '\u{E047}';
pub const ICON_SKIP_NEXT: char = '\u{E044}';
pub const ICON_SKIP_PREVIOUS: char = '\u{E045}';
pub const ICON_FAST_FORWARD: char = '\u{E01F}';
pub const ICON_FAST_REWIND: char = '\u{E020}';
pub const ICON_REPLAY: char = '\u{E042}';
pub const ICON_SHUFFLE: char = '\u{E043}';
pub const ICON_REPEAT: char = '\u{E040}';
pub const ICON_VOLUME_UP: char = '\u{E050}';
pub const ICON_VOLUME_DOWN: char = '\u{E04D}';
pub const ICON_VOLUME_MUTE: char = '\u{E04E}';
pub const ICON_VOLUME_OFF: char = '\u{E04F}';
pub const ICON_SMARTPHONE: char = '\u{E32C}';
pub const ICON_TABLET: char = '\u{E32F}';
pub const ICON_LAPTOP: char = '\u{E31E}';
pub const ICON_DESKTOP_WINDOWS: char = '\u{E30C}';
pub const ICON_KEYBOARD: char = '\u{E312}';
pub const ICON_MOUSE: char = '\u{E323}';
pub const ICON_GAMEPAD: char = '\u{E30F}';
pub const ICON_WIFI: char = '\u{E63E}';
pub const ICON_BLUETOOTH: char = '\u{E1A7}';
pub const ICON_BATTERY_FULL: char = '\u{E1A4}';
pub const ICON_BATTERY_ALERT: char = '\u{E19C}';
pub const ICON_FORMAT_BOLD: char = '\u{E238}';
pub const ICON_FORMAT_ITALIC: char = '\u{E23F}';
pub const ICON_FORMAT_UNDERLINED: char = '\u{E249}';
pub const ICON_FORMAT_LIST_BULLETED: char = '\u{E241}';
pub const ICON_FORMAT_LIST_NUMBERED: char = '\u{E242}';
pub const ICON_FORMAT_ALIGN_LEFT: char = '\u{E236}';
pub const ICON_FORMAT_ALIGN_CENTER: char = '\u{E234}';
pub const ICON_FORMAT_ALIGN_RIGHT: char = '\u{E237}';
pub const ICON_FORMAT_COLOR_TEXT: char = '\u{E23C}';
pub const ICON_FORMAT_COLOR_FILL: char = '\u{E23A}';
pub const ICON_PLACE: char = '\u{E55F}';
pub const ICON_MY_LOCATION: char = '\u{E55C}';
pub const ICON_NAVIGATION: char = '\u{E55D}';
pub const ICON_DIRECTIONS: char = '\u{E52E}';
pub const ICON_MAP: char = '\u{E55B}';
pub const ICON_CASINO: char = '\u{EB40}';
pub const ICON_EXTENSION: char = '\u{E87B}';
pub const ICON_SHIELD: char = '\u{E8E8}';
pub const ICON_SPORTS_MARTIAL_ARTS: char = '\u{EA8C}';
pub const ICON_AUTO_FIX_HIGH: char = '\u{E663}';
pub const ICON_LIGHTBULB: char = '\u{E0F0}';
pub const ICON_INVENTORY_2: char = '\u{E1A1}';
pub const ICON_BOOK: char = '\u{E865}';
pub const ICON_PSYCHOLOGY: char = '\u{EA4A}';
pub const ICON_FITNESS_CENTER: char = '\u{EB43}';
pub const ICON_SPEED: char = '\u{E9E4}';
pub const ICON_HEALING: char = '\u{E3F3}';
pub const ICON_LANGUAGE: char = '\u{E894}';
pub const ICON_DARK_MODE: char = '\u{E51C}';
pub const ICON_LIGHT_MODE: char = '\u{E518}';
pub const ICON_FULLSCREEN: char = '\u{E5D0}';
pub const ICON_FULLSCREEN_EXIT: char = '\u{E5D1}';
pub const ICON_ZOOM_IN: char = '\u{E8FF}';
pub const ICON_ZOOM_OUT: char = '\u{E900}';
pub const ICON_LOCK: char = '\u{E897}';
pub const ICON_LOCK_OPEN: char = '\u{E898}';
pub const ICON_TUNE: char = '\u{E429}';
pub const ICON_FILTER_LIST: char = '\u{E152}';
pub const ICON_SORT: char = '\u{E164}';
pub const ICON_DRAG_HANDLE: char = '\u{E25D}';
pub const ICON_APPS: char = '\u{E5C3}';
pub const ICON_VIEW_LIST: char = '\u{E8EF}';
pub const ICON_VIEW_MODULE: char = '\u{E8F0}';
pub const ICON_SCHEDULE: char = '\u{E8B5}';
pub const ICON_EVENT: char = '\u{E878}';
pub const ICON_TODAY: char = '\u{E8DF}';
pub fn icon_by_name(name: &str) -> Option<char> {
match name.trim().to_lowercase().as_str() {
"home" => Some(ICON_HOME),
"menu" => Some(ICON_MENU),
"more_vert" | "more-vert" => Some(ICON_MORE_VERT),
"more_horiz" | "more-horiz" => Some(ICON_MORE_HORIZ),
"arrow_back" | "arrow-back" | "back" => Some(ICON_ARROW_BACK),
"arrow_forward" | "arrow-forward" | "forward" => Some(ICON_ARROW_FORWARD),
"arrow_upward" | "arrow-upward" | "up" => Some(ICON_ARROW_UPWARD),
"arrow_downward" | "arrow-downward" | "down" => Some(ICON_ARROW_DOWNWARD),
"close" | "x" => Some(ICON_CLOSE),
"check" | "tick" => Some(ICON_CHECK),
"expand_more" | "expand-more" | "chevron_down" => Some(ICON_EXPAND_MORE),
"expand_less" | "expand-less" | "chevron_up" => Some(ICON_EXPAND_LESS),
"chevron_left" | "chevron-left" => Some(ICON_CHEVRON_LEFT),
"chevron_right" | "chevron-right" => Some(ICON_CHEVRON_RIGHT),
"add" | "plus" => Some(ICON_ADD),
"remove" | "minus" => Some(ICON_REMOVE),
"delete" | "trash" => Some(ICON_DELETE),
"edit" | "pencil" => Some(ICON_EDIT),
"save" => Some(ICON_SAVE),
"search" => Some(ICON_SEARCH),
"refresh" => Some(ICON_REFRESH),
"settings" | "gear" | "cog" => Some(ICON_SETTINGS),
"help" | "question" => Some(ICON_HELP),
"info" | "information" => Some(ICON_INFO),
"share" => Some(ICON_SHARE),
"download" => Some(ICON_DOWNLOAD),
"upload" => Some(ICON_UPLOAD),
"print" => Some(ICON_PRINT),
"copy" | "content_copy" => Some(ICON_CONTENT_COPY),
"paste" | "content_paste" => Some(ICON_CONTENT_PASTE),
"cut" | "content_cut" => Some(ICON_CONTENT_CUT),
"undo" => Some(ICON_UNDO),
"redo" => Some(ICON_REDO),
"checkbox" | "check_box" => Some(ICON_CHECK_BOX),
"checkbox_blank" | "check_box_outline_blank" => Some(ICON_CHECK_BOX_OUTLINE_BLANK),
"radio_checked" | "radio_button_checked" => Some(ICON_RADIO_BUTTON_CHECKED),
"radio_unchecked" | "radio_button_unchecked" => Some(ICON_RADIO_BUTTON_UNCHECKED),
"toggle_on" => Some(ICON_TOGGLE_ON),
"toggle_off" => Some(ICON_TOGGLE_OFF),
"star" | "star_filled" => Some(ICON_STAR),
"star_border" | "star_outline" => Some(ICON_STAR_BORDER),
"favorite" | "heart" | "heart_filled" => Some(ICON_FAVORITE),
"favorite_border" | "heart_outline" => Some(ICON_FAVORITE_BORDER),
"visibility" | "eye" | "visible" => Some(ICON_VISIBILITY),
"visibility_off" | "eye_off" | "hidden" => Some(ICON_VISIBILITY_OFF),
"error" => Some(ICON_ERROR),
"warning" => Some(ICON_WARNING),
"check_circle" | "success" => Some(ICON_CHECK_CIRCLE),
"cancel" => Some(ICON_CANCEL),
"block" | "prohibited" => Some(ICON_BLOCK),
"notifications" | "bell" => Some(ICON_NOTIFICATIONS),
"notifications_off" | "bell_off" => Some(ICON_NOTIFICATIONS_OFF),
"folder" => Some(ICON_FOLDER),
"folder_open" => Some(ICON_FOLDER_OPEN),
"description" | "document" | "file" => Some(ICON_DESCRIPTION),
"image" | "photo" => Some(ICON_IMAGE),
"videocam" | "video" => Some(ICON_VIDEOCAM),
"music_note" | "music" | "audio" => Some(ICON_MUSIC_NOTE),
"link" => Some(ICON_LINK),
"attach_file" | "attachment" => Some(ICON_ATTACH_FILE),
"person" | "user" => Some(ICON_PERSON),
"group" | "people" | "users" => Some(ICON_GROUP),
"account_circle" | "avatar" => Some(ICON_ACCOUNT_CIRCLE),
"person_add" | "add_user" => Some(ICON_PERSON_ADD),
"login" | "sign_in" => Some(ICON_LOGIN),
"logout" | "sign_out" => Some(ICON_LOGOUT),
"email" | "mail" => Some(ICON_EMAIL),
"chat" => Some(ICON_CHAT),
"message" | "sms" => Some(ICON_MESSAGE),
"phone" | "call" => Some(ICON_PHONE),
"send" => Some(ICON_SEND),
"play" | "play_arrow" => Some(ICON_PLAY_ARROW),
"pause" => Some(ICON_PAUSE),
"stop" => Some(ICON_STOP),
"skip_next" | "next" => Some(ICON_SKIP_NEXT),
"skip_previous" | "previous" => Some(ICON_SKIP_PREVIOUS),
"fast_forward" => Some(ICON_FAST_FORWARD),
"fast_rewind" | "rewind" => Some(ICON_FAST_REWIND),
"replay" => Some(ICON_REPLAY),
"shuffle" => Some(ICON_SHUFFLE),
"repeat" | "loop" => Some(ICON_REPEAT),
"volume_up" | "volume_high" => Some(ICON_VOLUME_UP),
"volume_down" | "volume_low" => Some(ICON_VOLUME_DOWN),
"volume_mute" => Some(ICON_VOLUME_MUTE),
"volume_off" => Some(ICON_VOLUME_OFF),
"smartphone" | "mobile" => Some(ICON_SMARTPHONE),
"tablet" => Some(ICON_TABLET),
"laptop" => Some(ICON_LAPTOP),
"desktop" | "computer" => Some(ICON_DESKTOP_WINDOWS),
"keyboard" => Some(ICON_KEYBOARD),
"mouse" => Some(ICON_MOUSE),
"gamepad" | "controller" => Some(ICON_GAMEPAD),
"wifi" => Some(ICON_WIFI),
"bluetooth" => Some(ICON_BLUETOOTH),
"battery_full" | "battery" => Some(ICON_BATTERY_FULL),
"battery_alert" | "battery_low" => Some(ICON_BATTERY_ALERT),
"casino" | "dice" => Some(ICON_CASINO),
"extension" | "puzzle" | "module" => Some(ICON_EXTENSION),
"shield" | "armor" | "ac" => Some(ICON_SHIELD),
"combat" | "martial_arts" => Some(ICON_SPORTS_MARTIAL_ARTS),
"magic" | "spell" | "auto_fix" => Some(ICON_AUTO_FIX_HIGH),
"lightbulb" | "idea" | "inspiration" => Some(ICON_LIGHTBULB),
"inventory" | "backpack" => Some(ICON_INVENTORY_2),
"book" | "spellbook" => Some(ICON_BOOK),
"psychology" | "mind" | "wisdom" | "intelligence" => Some(ICON_PSYCHOLOGY),
"fitness" | "strength" | "str" => Some(ICON_FITNESS_CENTER),
"speed" | "dexterity" | "dex" => Some(ICON_SPEED),
"healing" | "hp" | "health" => Some(ICON_HEALING),
"language" | "globe" | "world" => Some(ICON_LANGUAGE),
"dark_mode" | "moon" | "night" => Some(ICON_DARK_MODE),
"light_mode" | "sun" | "day" => Some(ICON_LIGHT_MODE),
"fullscreen" => Some(ICON_FULLSCREEN),
"fullscreen_exit" => Some(ICON_FULLSCREEN_EXIT),
"zoom_in" => Some(ICON_ZOOM_IN),
"zoom_out" => Some(ICON_ZOOM_OUT),
"lock" | "locked" => Some(ICON_LOCK),
"lock_open" | "unlocked" => Some(ICON_LOCK_OPEN),
"tune" | "adjust" => Some(ICON_TUNE),
"filter" | "filter_list" => Some(ICON_FILTER_LIST),
"sort" => Some(ICON_SORT),
"drag" | "drag_handle" => Some(ICON_DRAG_HANDLE),
"apps" | "grid" => Some(ICON_APPS),
"view_list" | "list" => Some(ICON_VIEW_LIST),
"view_module" | "grid_view" => Some(ICON_VIEW_MODULE),
"schedule" | "clock" | "time" => Some(ICON_SCHEDULE),
"event" | "calendar" => Some(ICON_EVENT),
"today" => Some(ICON_TODAY),
"material_ic_calendar_black_24dp" => Some(ICON_EVENT),
"material_ic_edit_black_24dp" => Some(ICON_EDIT),
"material_ic_clear_black_24dp" => Some(ICON_CLOSE),
"material_ic_menu_arrow_down_black_24dp" => Some(ICON_EXPAND_MORE),
"material_ic_menu_arrow_up_black_24dp" => Some(ICON_EXPAND_LESS),
"material_ic_keyboard_arrow_left_black_24dp" => Some(ICON_CHEVRON_LEFT),
"material_ic_keyboard_arrow_right_black_24dp" => Some(ICON_CHEVRON_RIGHT),
"material_ic_keyboard_arrow_previous_black_24dp" => Some(ICON_CHEVRON_LEFT),
"material_ic_keyboard_arrow_next_black_24dp" => Some(ICON_CHEVRON_RIGHT),
"ic_keyboard_black_24dp" => Some(ICON_KEYBOARD),
"ic_clock_black_24dp" => Some(ICON_SCHEDULE),
_ => None,
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_icon_by_name() {
assert_eq!(icon_by_name("home"), Some(ICON_HOME));
assert_eq!(icon_by_name("Home"), Some(ICON_HOME));
assert_eq!(icon_by_name("settings"), Some(ICON_SETTINGS));
assert_eq!(icon_by_name("gear"), Some(ICON_SETTINGS));
assert_eq!(
icon_by_name("material_ic_clear_black_24dp"),
Some(ICON_CLOSE)
);
assert_eq!(
icon_by_name("material_ic_calendar_black_24dp"),
Some(ICON_EVENT)
);
assert_eq!(icon_by_name("nonexistent"), None);
}
#[test]
fn test_icon_codepoints_are_valid_unicode() {
let icons = [
ICON_HOME,
ICON_MENU,
ICON_CLOSE,
ICON_CHECK,
ICON_SETTINGS,
ICON_SEARCH,
ICON_DELETE,
ICON_ADD,
];
for icon in icons {
assert!(icon as u32 > 0, "Icon codepoint should be non-zero");
assert!(
icon as u32 <= 0x10FFFF,
"Icon codepoint should be valid Unicode"
);
}
}
}