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 Person,
168 Pin,
169 PlayOutlined,
170 PlayFilled,
171 Plus,
172 Power,
173 Public,
174 PullRequest,
175 Quote,
176 Reader,
177 RefreshTitle,
178 Regex,
179 ReplNeutral,
180 Replace,
181 ReplaceAll,
182 ReplaceNext,
183 ReplyArrowRight,
184 Rerun,
185 Return,
186 RotateCcw,
187 RotateCw,
188 Scissors,
189 Screen,
190 SelectAll,
191 Send,
192 Server,
193 Settings,
194 ShieldCheck,
195 Shift,
196 Slash,
197 Sliders,
198 Space,
199 Sparkle,
200 Split,
201 SplitAlt,
202 SquareDot,
203 SquareMinus,
204 SquarePlus,
205 Star,
206 StarFilled,
207 Stop,
208 Supermaven,
209 SupermavenDisabled,
210 SupermavenError,
211 SupermavenInit,
212 SwatchBook,
213 Tab,
214 Terminal,
215 TerminalAlt,
216 TextSnippet,
217 TextThread,
218 Thread,
219 ThreadFromSummary,
220 ThumbsDown,
221 ThumbsUp,
222 TodoComplete,
223 TodoPending,
224 TodoProgress,
225 ToolCopy,
226 ToolDeleteFile,
227 ToolDiagnostics,
228 ToolFolder,
229 ToolHammer,
230 ToolNotification,
231 ToolPencil,
232 ToolRead,
233 ToolRegex,
234 ToolSearch,
235 ToolTerminal,
236 ToolThink,
237 ToolWeb,
238 Trash,
239 Triangle,
240 TriangleRight,
241 Undo,
242 Unpin,
243 UserCheck,
244 UserGroup,
245 UserRoundPen,
246 Warning,
247 WholeWord,
248 XCircle,
249 XCircleFilled,
250 ZedAgent,
251 ZedAssistant,
252 ZedBurnMode,
253 ZedBurnModeOn,
254 ZedMcpCustom,
255 ZedMcpExtension,
256 ZedPredict,
257 ZedPredictDisabled,
258 ZedPredictDown,
259 ZedPredictError,
260 ZedPredictUp,
261 ZedXCopilot,
262}
263
264impl IconName {
265 /// Returns the path to this icon.
266 pub fn path(&self) -> Arc<str> {
267 let file_stem: &'static str = self.into();
268 format!("icons/{file_stem}.svg").into()
269 }
270}