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