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