1use std::sync::Arc;
2
3use serde::{Deserialize, Serialize};
4use strum::{EnumIter, EnumString, IntoStaticStr};
5
6#[derive(
7 Debug, PartialEq, Eq, Copy, Clone, EnumIter, EnumString, IntoStaticStr, Serialize, Deserialize,
8)]
9#[strum(serialize_all = "snake_case")]
10pub enum IconName {
11 Ai,
12 AiAnthropic,
13 AiBedrock,
14 AiClaude,
15 AiDeepSeek,
16 AiEdit,
17 AiGemini,
18 AiGoogle,
19 AiLmStudio,
20 AiMistral,
21 AiOllama,
22 AiOpenAi,
23 AiOpenAiCompat,
24 AiOpenRouter,
25 AiVZero,
26 AiXAi,
27 AiZed,
28 ArrowCircle,
29 ArrowDown,
30 ArrowDown10,
31 ArrowDownRight,
32 ArrowLeft,
33 ArrowRight,
34 ArrowRightLeft,
35 ArrowUp,
36 ArrowUpRight,
37 AudioOff,
38 AudioOn,
39 Backspace,
40 Bell,
41 BellDot,
42 BellOff,
43 BellRing,
44 Binary,
45 Blocks,
46 BoltOutlined,
47 BoltFilled,
48 Book,
49 BookCopy,
50 CaseSensitive,
51 Chat,
52 Check,
53 CheckDouble,
54 ChevronDown,
55 ChevronLeft,
56 ChevronRight,
57 ChevronUp,
58 ChevronUpDown,
59 Circle,
60 CircleHelp,
61 Close,
62 CloudDownload,
63 Code,
64 Cog,
65 Command,
66 Control,
67 Copilot,
68 CopilotDisabled,
69 CopilotError,
70 CopilotInit,
71 Copy,
72 CountdownTimer,
73 Crosshair,
74 CursorIBeam,
75 Dash,
76 DatabaseZap,
77 Debug,
78 DebugBreakpoint,
79 DebugContinue,
80 DebugDisabledBreakpoint,
81 DebugDisabledLogBreakpoint,
82 DebugDetach,
83 DebugIgnoreBreakpoints,
84 DebugLogBreakpoint,
85 DebugPause,
86 DebugStepBack,
87 DebugStepInto,
88 DebugStepOut,
89 DebugStepOver,
90 Diff,
91 Disconnected,
92 Download,
93 EditorAtom,
94 EditorCursor,
95 EditorEmacs,
96 EditorJetBrains,
97 EditorSublime,
98 EditorVsCode,
99 Ellipsis,
100 EllipsisVertical,
101 Envelope,
102 Eraser,
103 Escape,
104 Exit,
105 ExpandDown,
106 ExpandUp,
107 ExpandVertical,
108 Eye,
109 File,
110 FileCode,
111 FileDiff,
112 FileDoc,
113 FileGeneric,
114 FileGit,
115 FileLock,
116 FileMarkdown,
117 FileRust,
118 FileTextFilled,
119 FileTextOutlined,
120 FileToml,
121 FileTree,
122 Filter,
123 Flame,
124 Folder,
125 FolderOpen,
126 FolderSearch,
127 Font,
128 FontSize,
129 FontWeight,
130 ForwardArrow,
131 GenericClose,
132 GenericMaximize,
133 GenericMinimize,
134 GenericRestore,
135 GitBranch,
136 GitBranchAlt,
137 Github,
138 Hash,
139 HistoryRerun,
140 Image,
141 Indicator,
142 Info,
143 Json,
144 Keyboard,
145 Library,
146 LineHeight,
147 ListCollapse,
148 ListTodo,
149 ListTree,
150 ListX,
151 LoadCircle,
152 LocationEdit,
153 LockOutlined,
154 MagnifyingGlass,
155 Maximize,
156 Menu,
157 MenuAlt,
158 MenuAltTemp,
159 Mic,
160 MicMute,
161 Minimize,
162 Notepad,
163 Option,
164 PageDown,
165 PageUp,
166 Pencil,
167 PencilUnavailable,
168 Person,
169 Pin,
170 PlayOutlined,
171 PlayFilled,
172 Plus,
173 Power,
174 Public,
175 PullRequest,
176 Quote,
177 Reader,
178 RefreshTitle,
179 Regex,
180 ReplNeutral,
181 Replace,
182 ReplaceAll,
183 ReplaceNext,
184 ReplyArrowRight,
185 Rerun,
186 Return,
187 RotateCcw,
188 RotateCw,
189 Scissors,
190 Screen,
191 SelectAll,
192 Send,
193 Server,
194 Settings,
195 ShieldCheck,
196 Shift,
197 Slash,
198 Sliders,
199 Space,
200 Sparkle,
201 Split,
202 SplitAlt,
203 SquareDot,
204 SquareMinus,
205 SquarePlus,
206 Star,
207 StarFilled,
208 Stop,
209 Supermaven,
210 SupermavenDisabled,
211 SupermavenError,
212 SupermavenInit,
213 SwatchBook,
214 Tab,
215 Terminal,
216 TerminalAlt,
217 TextSnippet,
218 TextThread,
219 Thread,
220 ThreadFromSummary,
221 ThumbsDown,
222 ThumbsUp,
223 TodoComplete,
224 TodoPending,
225 TodoProgress,
226 ToolCopy,
227 ToolDeleteFile,
228 ToolDiagnostics,
229 ToolFolder,
230 ToolHammer,
231 ToolNotification,
232 ToolPencil,
233 ToolRead,
234 ToolRegex,
235 ToolSearch,
236 ToolTerminal,
237 ToolThink,
238 ToolWeb,
239 Trash,
240 Triangle,
241 TriangleRight,
242 Undo,
243 Unpin,
244 UserCheck,
245 UserGroup,
246 UserRoundPen,
247 Warning,
248 WholeWord,
249 XCircle,
250 XCircleFilled,
251 ZedAgent,
252 ZedAssistant,
253 ZedBurnMode,
254 ZedBurnModeOn,
255 ZedMcpCustom,
256 ZedMcpExtension,
257 ZedPredict,
258 ZedPredictDisabled,
259 ZedPredictDown,
260 ZedPredictError,
261 ZedPredictUp,
262 ZedXCopilot,
263}
264
265impl IconName {
266 /// Returns the path to this icon.
267 pub fn path(&self) -> Arc<str> {
268 let file_stem: &'static str = self.into();
269 format!("icons/{file_stem}.svg").into()
270 }
271}