Skip to main content

fc_dioxus/core/
icons.rs

1// Generated by cargo xtask sync-upstream. Do not edit.
2/// Every icon in upstream's built-in set (`future-css/icons`), in upstream's order.
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
4#[non_exhaustive]
5#[repr(usize)]
6pub enum IconName {
7    /// Upstream's `copy` icon.
8    Copy,
9    /// Upstream's `check` icon.
10    Check,
11    /// Upstream's `close` icon.
12    Close,
13    /// Upstream's `plus` icon.
14    Plus,
15    /// Upstream's `minus` icon.
16    Minus,
17    /// Upstream's `search` icon.
18    Search,
19    /// Upstream's `edit` icon.
20    Edit,
21    /// Upstream's `trash` icon.
22    Trash,
23    /// Upstream's `download` icon.
24    Download,
25    /// Upstream's `upload` icon.
26    Upload,
27    /// Upstream's `share` icon.
28    Share,
29    /// Upstream's `link` icon.
30    Link,
31    /// Upstream's `external-link` icon.
32    ExternalLink,
33    /// Upstream's `refresh` icon.
34    Refresh,
35    /// Upstream's `undo` icon.
36    Undo,
37    /// Upstream's `redo` icon.
38    Redo,
39    /// Upstream's `filter` icon.
40    Filter,
41    /// Upstream's `settings` icon.
42    Settings,
43    /// Upstream's `maximize` icon.
44    Maximize,
45    /// Upstream's `minimize` icon.
46    Minimize,
47    /// Upstream's `menu` icon.
48    Menu,
49    /// Upstream's `more-horizontal` icon.
50    MoreHorizontal,
51    /// Upstream's `more-vertical` icon.
52    MoreVertical,
53    /// Upstream's `chevron-up` icon.
54    ChevronUp,
55    /// Upstream's `chevron-down` icon.
56    ChevronDown,
57    /// Upstream's `chevron-start` icon.
58    ChevronStart,
59    /// Upstream's `chevron-end` icon.
60    ChevronEnd,
61    /// Upstream's `arrow-up` icon.
62    ArrowUp,
63    /// Upstream's `arrow-down` icon.
64    ArrowDown,
65    /// Upstream's `arrow-start` icon.
66    ArrowStart,
67    /// Upstream's `arrow-end` icon.
68    ArrowEnd,
69    /// Upstream's `home` icon.
70    Home,
71    /// Upstream's `sidebar` icon.
72    Sidebar,
73    /// Upstream's `info` icon.
74    Info,
75    /// Upstream's `success` icon.
76    Success,
77    /// Upstream's `warning` icon.
78    Warning,
79    /// Upstream's `error` icon.
80    Error,
81    /// Upstream's `help` icon.
82    Help,
83    /// Upstream's `lock` icon.
84    Lock,
85    /// Upstream's `eye` icon.
86    Eye,
87    /// Upstream's `eye-off` icon.
88    EyeOff,
89    /// Upstream's `bell` icon.
90    Bell,
91    /// Upstream's `star` icon.
92    Star,
93    /// Upstream's `clock` icon.
94    Clock,
95    /// Upstream's `send` icon.
96    Send,
97    /// Upstream's `stop` icon.
98    Stop,
99    /// Upstream's `play` icon.
100    Play,
101    /// Upstream's `pause` icon.
102    Pause,
103    /// Upstream's `mic` icon.
104    Mic,
105    /// Upstream's `attach` icon.
106    Attach,
107    /// Upstream's `thumbs-up` icon.
108    ThumbsUp,
109    /// Upstream's `thumbs-down` icon.
110    ThumbsDown,
111    /// Upstream's `sparkles` icon.
112    Sparkles,
113    /// Upstream's `user` icon.
114    User,
115    /// Upstream's `mail` icon.
116    Mail,
117    /// Upstream's `file` icon.
118    File,
119    /// Upstream's `folder` icon.
120    Folder,
121    /// Upstream's `image` icon.
122    Image,
123    /// Upstream's `code` icon.
124    Code,
125    /// Upstream's `terminal` icon.
126    Terminal,
127    /// Upstream's `git-branch` icon.
128    GitBranch,
129    /// Upstream's `calendar` icon.
130    Calendar,
131    /// Upstream's `bookmark` icon.
132    Bookmark,
133    /// Upstream's `globe` icon.
134    Globe,
135    /// Upstream's `sun` icon.
136    Sun,
137    /// Upstream's `moon` icon.
138    Moon,
139}
140struct IconData {
141    name: &'static str,
142    path: &'static str,
143    mirror: bool,
144}
145const DATA: &[IconData] = &[
146IconData { name: "copy", path: "M11 9h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-8a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2zM15 9V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h4", mirror: false },
147IconData { name: "check", path: "M5 12.5l4.5 4.5L19 7.5", mirror: false },
148IconData { name: "close", path: "M6 6l12 12M18 6L6 18", mirror: false },
149IconData { name: "plus", path: "M12 5v14M5 12h14", mirror: false },
150IconData { name: "minus", path: "M5 12h14", mirror: false },
151IconData { name: "search", path: "M11 4.5a6.5 6.5 0 1 0 0 13a6.5 6.5 0 1 0 0-13zM15.6 15.6L20 20", mirror: false },
152IconData { name: "edit", path: "M4 20h4L19 9a2.83 2.83 0 0 0-4-4L4 16zM13.5 6.5l4 4", mirror: false },
153IconData { name: "trash", path: "M4 7h16M10 11v6M14 11v6M6 7l1 12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2l1-12M9 7V4h6v3", mirror: false },
154IconData { name: "download", path: "M12 4v11M7 10l5 5 5-5M5 20h14", mirror: false },
155IconData { name: "upload", path: "M12 16V5M7 10l5-5 5 5M5 20h14", mirror: false },
156IconData { name: "share", path: "M18 2.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 1 0 0-5zM6 9.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 1 0 0-5zM18 16.5a2.5 2.5 0 1 0 0 5a2.5 2.5 0 1 0 0-5zM8.2 10.8l7.6-4.5M8.2 13.2l7.6 4.5", mirror: false },
157IconData { name: "link", path: "M10 14a4 4 0 0 0 5.66 0l3-3a4 4 0 0 0-5.66-5.66l-1 1M14 10a4 4 0 0 0-5.66 0l-3 3a4 4 0 0 0 5.66 5.66l1-1", mirror: false },
158IconData { name: "external-link", path: "M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5", mirror: true },
159IconData { name: "refresh", path: "M20 12a8 8 0 1 1-2.34-5.66M20 4v4h-4", mirror: false },
160IconData { name: "undo", path: "M9 14L4 9l5-5M4 9h10a6 6 0 0 1 0 12h-3", mirror: true },
161IconData { name: "redo", path: "M15 14l5-5-5-5M20 9H10a6 6 0 0 0 0 12h3", mirror: true },
162IconData { name: "filter", path: "M3 5h18l-7 8v6l-4 2v-8z", mirror: false },
163IconData { name: "settings", path: "M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1M15 4v4M9 10v4M17 16v4", mirror: false },
164IconData { name: "maximize", path: "M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7", mirror: false },
165IconData { name: "minimize", path: "M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7", mirror: false },
166IconData { name: "menu", path: "M4 6h16M4 12h16M4 18h16", mirror: false },
167IconData { name: "more-horizontal", path: "M5 11a1 1 0 1 0 0 2a1 1 0 1 0 0-2zM12 11a1 1 0 1 0 0 2a1 1 0 1 0 0-2zM19 11a1 1 0 1 0 0 2a1 1 0 1 0 0-2z", mirror: false },
168IconData { name: "more-vertical", path: "M12 4a1 1 0 1 0 0 2a1 1 0 1 0 0-2zM12 11a1 1 0 1 0 0 2a1 1 0 1 0 0-2zM12 18a1 1 0 1 0 0 2a1 1 0 1 0 0-2z", mirror: false },
169IconData { name: "chevron-up", path: "M6 15l6-6 6 6", mirror: false },
170IconData { name: "chevron-down", path: "M6 9l6 6 6-6", mirror: false },
171IconData { name: "chevron-start", path: "M15 6l-6 6 6 6", mirror: true },
172IconData { name: "chevron-end", path: "M9 6l6 6-6 6", mirror: true },
173IconData { name: "arrow-up", path: "M12 19V5M6 11l6-6 6 6", mirror: false },
174IconData { name: "arrow-down", path: "M12 5v14M6 13l6 6 6-6", mirror: false },
175IconData { name: "arrow-start", path: "M19 12H5M11 6l-6 6 6 6", mirror: true },
176IconData { name: "arrow-end", path: "M5 12h14M13 6l6 6-6 6", mirror: true },
177IconData { name: "home", path: "M3 11l9-7 9 7M5 9.5V20h5v-6h4v6h5V9.5", mirror: false },
178IconData { name: "sidebar", path: "M5 4h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM9 4v16", mirror: true },
179IconData { name: "info", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 11v5M12 8h.01", mirror: false },
180IconData { name: "success", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM8 12.5l2.5 2.5L16 9.5", mirror: false },
181IconData { name: "warning", path: "M10.3 4.2L2.8 17.5a2 2 0 0 0 1.7 3h15a2 2 0 0 0 1.7-3L13.7 4.2a2 2 0 0 0-3.4 0zM12 9v4M12 17h.01", mirror: false },
182IconData { name: "error", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 7.5v5M12 16h.01", mirror: false },
183IconData { name: "help", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM9.5 9.5a2.5 2.5 0 1 1 3.5 2.3c-.6.3-1 .9-1 1.6v.6M12 17h.01", mirror: false },
184IconData { name: "lock", path: "M6 11h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1zM8 11V7a4 4 0 0 1 8 0v4", mirror: false },
185IconData { name: "eye", path: "M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12zM12 9a3 3 0 1 0 0 6a3 3 0 1 0 0-6z", mirror: false },
186IconData { name: "eye-off", path: "M10.6 5.1A10.6 10.6 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.2 3.2M6.6 6.6A16.6 16.6 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6M9.9 9.9a3 3 0 0 0 4.2 4.2M3 3l18 18", mirror: false },
187IconData { name: "bell", path: "M6 16v-5a6 6 0 0 1 12 0v5l2 2H4zM10 21h4", mirror: false },
188IconData { name: "star", path: "M12 3L14.5 9.1L21 9.6L16 13.8L17.6 20.2L12 16.7L6.4 20.2L8 13.8L3 9.6L9.5 9.1z", mirror: false },
189IconData { name: "clock", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 7v5l3 2", mirror: false },
190IconData { name: "send", path: "M21 3L10 14M21 3l-7 18-4-7-7-4z", mirror: true },
191IconData { name: "stop", path: "M8 6h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z", mirror: false },
192IconData { name: "play", path: "M7 4.5v15l12-7.5z", mirror: false },
193IconData { name: "pause", path: "M8 5v14M16 5v14", mirror: false },
194IconData { name: "mic", path: "M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3zM5 11a7 7 0 0 0 14 0M12 18v3", mirror: false },
195IconData { name: "attach", path: "M20 11.5l-8 8a5 5 0 0 1-7-7l8.5-8.5a3.3 3.3 0 0 1 4.7 4.7L9.7 17.2a1.7 1.7 0 0 1-2.4-2.4L15 7", mirror: false },
196IconData { name: "thumbs-up", path: "M7 11v10M7 11l4-8a2 2 0 0 1 2.5 2v4h5.3a2 2 0 0 1 2 2.4l-1.4 6A2 2 0 0 1 17.4 21H4a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1z", mirror: false },
197IconData { name: "thumbs-down", path: "M7 13V3M7 13l4 8a2 2 0 0 0 2.5-2v-4h5.3a2 2 0 0 0 2-2.4l-1.4-6A2 2 0 0 0 17.4 3H4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1z", mirror: false },
198IconData { name: "sparkles", path: "M11 3l1.8 5.2L18 10l-5.2 1.8L11 17l-1.8-5.2L4 10l5.2-1.8zM19 15v5M16.5 17.5h5", mirror: false },
199IconData { name: "user", path: "M12 4a4 4 0 1 0 0 8a4 4 0 1 0 0-8zM4 20a8 6 0 0 1 16 0", mirror: false },
200IconData { name: "mail", path: "M4 5h16a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM3 7l9 6 9-6", mirror: false },
201IconData { name: "file", path: "M6 3h8l5 5v12a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zM14 3v5h5", mirror: false },
202IconData { name: "folder", path: "M3 6a1 1 0 0 1 1-1h5l2 2h9a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z", mirror: false },
203IconData { name: "image", path: "M5 4h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM9 8a1.5 1.5 0 1 0 0 3a1.5 1.5 0 1 0 0-3zM20 15l-5-5L5 20", mirror: false },
204IconData { name: "code", path: "M9 7l-5 5 5 5M15 7l5 5-5 5", mirror: false },
205IconData { name: "terminal", path: "M4 6l6 6-6 6M12 18h8", mirror: false },
206IconData { name: "git-branch", path: "M6 3v12M18 3a3 3 0 1 0 0 6a3 3 0 1 0 0-6zM6 15a3 3 0 1 0 0 6a3 3 0 1 0 0-6zM18 9a9 9 0 0 1-9 9", mirror: false },
207IconData { name: "calendar", path: "M5 5h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zM4 10h16M8 3v4M16 3v4", mirror: false },
208IconData { name: "bookmark", path: "M6 3h12v18l-6-4-6 4z", mirror: false },
209IconData { name: "globe", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM3 12h18M12 3a14 14 0 0 1 0 18a14 14 0 0 1 0-18z", mirror: false },
210IconData { name: "sun", path: "M12 8a4 4 0 1 0 0 8a4 4 0 1 0 0-8zM12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4", mirror: false },
211IconData { name: "moon", path: "M20 14A8 8 0 1 1 10 4a6.5 6.5 0 0 0 10 10z", mirror: false },
212];
213/// The coordinate space every icon path is drawn in.
214pub const ICON_VIEWBOX: &str = "0 0 24 24";
215/// The stroke width the paths are drawn for, as an SVG attribute value.
216pub const ICON_STROKE_WIDTH: &str = "2";
217impl IconName {
218    /// Every icon, in upstream's order.
219    pub const ALL: &'static [Self] = &[
220        Self::Copy,
221        Self::Check,
222        Self::Close,
223        Self::Plus,
224        Self::Minus,
225        Self::Search,
226        Self::Edit,
227        Self::Trash,
228        Self::Download,
229        Self::Upload,
230        Self::Share,
231        Self::Link,
232        Self::ExternalLink,
233        Self::Refresh,
234        Self::Undo,
235        Self::Redo,
236        Self::Filter,
237        Self::Settings,
238        Self::Maximize,
239        Self::Minimize,
240        Self::Menu,
241        Self::MoreHorizontal,
242        Self::MoreVertical,
243        Self::ChevronUp,
244        Self::ChevronDown,
245        Self::ChevronStart,
246        Self::ChevronEnd,
247        Self::ArrowUp,
248        Self::ArrowDown,
249        Self::ArrowStart,
250        Self::ArrowEnd,
251        Self::Home,
252        Self::Sidebar,
253        Self::Info,
254        Self::Success,
255        Self::Warning,
256        Self::Error,
257        Self::Help,
258        Self::Lock,
259        Self::Eye,
260        Self::EyeOff,
261        Self::Bell,
262        Self::Star,
263        Self::Clock,
264        Self::Send,
265        Self::Stop,
266        Self::Play,
267        Self::Pause,
268        Self::Mic,
269        Self::Attach,
270        Self::ThumbsUp,
271        Self::ThumbsDown,
272        Self::Sparkles,
273        Self::User,
274        Self::Mail,
275        Self::File,
276        Self::Folder,
277        Self::Image,
278        Self::Code,
279        Self::Terminal,
280        Self::GitBranch,
281        Self::Calendar,
282        Self::Bookmark,
283        Self::Globe,
284        Self::Sun,
285        Self::Moon,
286    ];
287    /// Upstream's name, as used in `iconMarkup` and the sprite id `fc-icon-NAME`.
288    #[must_use]
289    pub fn as_str(self) -> &'static str {
290        DATA.get(self as usize).map_or("", |data| data.name)
291    }
292    /// The SVG path data, in the [`ICON_VIEWBOX`] coordinate space.
293    #[must_use]
294    pub fn path(self) -> &'static str {
295        DATA.get(self as usize).map_or("", |data| data.path)
296    }
297    /// Whether the icon points along the line of text and flips in right-to-left text.
298    #[must_use]
299    pub fn mirrored(self) -> bool {
300        DATA.get(self as usize).is_some_and(|data| data.mirror)
301    }
302    /// The icon with upstream's name, for names that arrive as data.
303    #[must_use]
304    pub fn from_name(name: &str) -> Option<Self> {
305        Self::ALL.iter().copied().find(|icon| icon.as_str() == name)
306    }
307}