fc-dioxus 0.1.2

Typed, accessible Dioxus components over future-css
Documentation
// Generated by cargo xtask sync-upstream. Do not edit.
/// Every icon in upstream's built-in set (`future-css/icons`), in upstream's order.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
#[repr(usize)]
pub enum IconName {
    /// Upstream's `copy` icon.
    Copy,
    /// Upstream's `check` icon.
    Check,
    /// Upstream's `close` icon.
    Close,
    /// Upstream's `plus` icon.
    Plus,
    /// Upstream's `minus` icon.
    Minus,
    /// Upstream's `search` icon.
    Search,
    /// Upstream's `edit` icon.
    Edit,
    /// Upstream's `trash` icon.
    Trash,
    /// Upstream's `download` icon.
    Download,
    /// Upstream's `upload` icon.
    Upload,
    /// Upstream's `share` icon.
    Share,
    /// Upstream's `link` icon.
    Link,
    /// Upstream's `external-link` icon.
    ExternalLink,
    /// Upstream's `refresh` icon.
    Refresh,
    /// Upstream's `undo` icon.
    Undo,
    /// Upstream's `redo` icon.
    Redo,
    /// Upstream's `filter` icon.
    Filter,
    /// Upstream's `settings` icon.
    Settings,
    /// Upstream's `maximize` icon.
    Maximize,
    /// Upstream's `minimize` icon.
    Minimize,
    /// Upstream's `menu` icon.
    Menu,
    /// Upstream's `more-horizontal` icon.
    MoreHorizontal,
    /// Upstream's `more-vertical` icon.
    MoreVertical,
    /// Upstream's `chevron-up` icon.
    ChevronUp,
    /// Upstream's `chevron-down` icon.
    ChevronDown,
    /// Upstream's `chevron-start` icon.
    ChevronStart,
    /// Upstream's `chevron-end` icon.
    ChevronEnd,
    /// Upstream's `arrow-up` icon.
    ArrowUp,
    /// Upstream's `arrow-down` icon.
    ArrowDown,
    /// Upstream's `arrow-start` icon.
    ArrowStart,
    /// Upstream's `arrow-end` icon.
    ArrowEnd,
    /// Upstream's `home` icon.
    Home,
    /// Upstream's `sidebar` icon.
    Sidebar,
    /// Upstream's `info` icon.
    Info,
    /// Upstream's `success` icon.
    Success,
    /// Upstream's `warning` icon.
    Warning,
    /// Upstream's `error` icon.
    Error,
    /// Upstream's `help` icon.
    Help,
    /// Upstream's `lock` icon.
    Lock,
    /// Upstream's `eye` icon.
    Eye,
    /// Upstream's `eye-off` icon.
    EyeOff,
    /// Upstream's `bell` icon.
    Bell,
    /// Upstream's `star` icon.
    Star,
    /// Upstream's `clock` icon.
    Clock,
    /// Upstream's `send` icon.
    Send,
    /// Upstream's `stop` icon.
    Stop,
    /// Upstream's `play` icon.
    Play,
    /// Upstream's `pause` icon.
    Pause,
    /// Upstream's `mic` icon.
    Mic,
    /// Upstream's `attach` icon.
    Attach,
    /// Upstream's `thumbs-up` icon.
    ThumbsUp,
    /// Upstream's `thumbs-down` icon.
    ThumbsDown,
    /// Upstream's `sparkles` icon.
    Sparkles,
    /// Upstream's `user` icon.
    User,
    /// Upstream's `mail` icon.
    Mail,
    /// Upstream's `file` icon.
    File,
    /// Upstream's `folder` icon.
    Folder,
    /// Upstream's `image` icon.
    Image,
    /// Upstream's `code` icon.
    Code,
    /// Upstream's `terminal` icon.
    Terminal,
    /// Upstream's `git-branch` icon.
    GitBranch,
    /// Upstream's `calendar` icon.
    Calendar,
    /// Upstream's `bookmark` icon.
    Bookmark,
    /// Upstream's `globe` icon.
    Globe,
    /// Upstream's `sun` icon.
    Sun,
    /// Upstream's `moon` icon.
    Moon,
}
struct IconData {
    name: &'static str,
    path: &'static str,
    mirror: bool,
}
const DATA: &[IconData] = &[
IconData { 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 },
IconData { name: "check", path: "M5 12.5l4.5 4.5L19 7.5", mirror: false },
IconData { name: "close", path: "M6 6l12 12M18 6L6 18", mirror: false },
IconData { name: "plus", path: "M12 5v14M5 12h14", mirror: false },
IconData { name: "minus", path: "M5 12h14", mirror: false },
IconData { 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 },
IconData { name: "edit", path: "M4 20h4L19 9a2.83 2.83 0 0 0-4-4L4 16zM13.5 6.5l4 4", mirror: false },
IconData { 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 },
IconData { name: "download", path: "M12 4v11M7 10l5 5 5-5M5 20h14", mirror: false },
IconData { name: "upload", path: "M12 16V5M7 10l5-5 5 5M5 20h14", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { name: "refresh", path: "M20 12a8 8 0 1 1-2.34-5.66M20 4v4h-4", mirror: false },
IconData { name: "undo", path: "M9 14L4 9l5-5M4 9h10a6 6 0 0 1 0 12h-3", mirror: true },
IconData { name: "redo", path: "M15 14l5-5-5-5M20 9H10a6 6 0 0 0 0 12h3", mirror: true },
IconData { name: "filter", path: "M3 5h18l-7 8v6l-4 2v-8z", mirror: false },
IconData { name: "settings", path: "M4 6h9M17 6h3M4 12h3M11 12h9M4 18h11M19 18h1M15 4v4M9 10v4M17 16v4", mirror: false },
IconData { name: "maximize", path: "M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7", mirror: false },
IconData { name: "minimize", path: "M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7", mirror: false },
IconData { name: "menu", path: "M4 6h16M4 12h16M4 18h16", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { name: "chevron-up", path: "M6 15l6-6 6 6", mirror: false },
IconData { name: "chevron-down", path: "M6 9l6 6 6-6", mirror: false },
IconData { name: "chevron-start", path: "M15 6l-6 6 6 6", mirror: true },
IconData { name: "chevron-end", path: "M9 6l6 6-6 6", mirror: true },
IconData { name: "arrow-up", path: "M12 19V5M6 11l6-6 6 6", mirror: false },
IconData { name: "arrow-down", path: "M12 5v14M6 13l6 6 6-6", mirror: false },
IconData { name: "arrow-start", path: "M19 12H5M11 6l-6 6 6 6", mirror: true },
IconData { name: "arrow-end", path: "M5 12h14M13 6l6 6-6 6", mirror: true },
IconData { name: "home", path: "M3 11l9-7 9 7M5 9.5V20h5v-6h4v6h5V9.5", mirror: false },
IconData { 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 },
IconData { name: "info", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 11v5M12 8h.01", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { name: "error", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 7.5v5M12 16h.01", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { name: "bell", path: "M6 16v-5a6 6 0 0 1 12 0v5l2 2H4zM10 21h4", mirror: false },
IconData { 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 },
IconData { name: "clock", path: "M12 3a9 9 0 1 0 0 18a9 9 0 1 0 0-18zM12 7v5l3 2", mirror: false },
IconData { name: "send", path: "M21 3L10 14M21 3l-7 18-4-7-7-4z", mirror: true },
IconData { 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 },
IconData { name: "play", path: "M7 4.5v15l12-7.5z", mirror: false },
IconData { name: "pause", path: "M8 5v14M16 5v14", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { 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 },
IconData { name: "code", path: "M9 7l-5 5 5 5M15 7l5 5-5 5", mirror: false },
IconData { name: "terminal", path: "M4 6l6 6-6 6M12 18h8", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { name: "bookmark", path: "M6 3h12v18l-6-4-6 4z", mirror: false },
IconData { 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 },
IconData { 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 },
IconData { name: "moon", path: "M20 14A8 8 0 1 1 10 4a6.5 6.5 0 0 0 10 10z", mirror: false },
];
/// The coordinate space every icon path is drawn in.
pub const ICON_VIEWBOX: &str = "0 0 24 24";
/// The stroke width the paths are drawn for, as an SVG attribute value.
pub const ICON_STROKE_WIDTH: &str = "2";
impl IconName {
    /// Every icon, in upstream's order.
    pub const ALL: &'static [Self] = &[
        Self::Copy,
        Self::Check,
        Self::Close,
        Self::Plus,
        Self::Minus,
        Self::Search,
        Self::Edit,
        Self::Trash,
        Self::Download,
        Self::Upload,
        Self::Share,
        Self::Link,
        Self::ExternalLink,
        Self::Refresh,
        Self::Undo,
        Self::Redo,
        Self::Filter,
        Self::Settings,
        Self::Maximize,
        Self::Minimize,
        Self::Menu,
        Self::MoreHorizontal,
        Self::MoreVertical,
        Self::ChevronUp,
        Self::ChevronDown,
        Self::ChevronStart,
        Self::ChevronEnd,
        Self::ArrowUp,
        Self::ArrowDown,
        Self::ArrowStart,
        Self::ArrowEnd,
        Self::Home,
        Self::Sidebar,
        Self::Info,
        Self::Success,
        Self::Warning,
        Self::Error,
        Self::Help,
        Self::Lock,
        Self::Eye,
        Self::EyeOff,
        Self::Bell,
        Self::Star,
        Self::Clock,
        Self::Send,
        Self::Stop,
        Self::Play,
        Self::Pause,
        Self::Mic,
        Self::Attach,
        Self::ThumbsUp,
        Self::ThumbsDown,
        Self::Sparkles,
        Self::User,
        Self::Mail,
        Self::File,
        Self::Folder,
        Self::Image,
        Self::Code,
        Self::Terminal,
        Self::GitBranch,
        Self::Calendar,
        Self::Bookmark,
        Self::Globe,
        Self::Sun,
        Self::Moon,
    ];
    /// Upstream's name, as used in `iconMarkup` and the sprite id `fc-icon-NAME`.
    #[must_use]
    pub fn as_str(self) -> &'static str {
        DATA.get(self as usize).map_or("", |data| data.name)
    }
    /// The SVG path data, in the [`ICON_VIEWBOX`] coordinate space.
    #[must_use]
    pub fn path(self) -> &'static str {
        DATA.get(self as usize).map_or("", |data| data.path)
    }
    /// Whether the icon points along the line of text and flips in right-to-left text.
    #[must_use]
    pub fn mirrored(self) -> bool {
        DATA.get(self as usize).is_some_and(|data| data.mirror)
    }
    /// The icon with upstream's name, for names that arrive as data.
    #[must_use]
    pub fn from_name(name: &str) -> Option<Self> {
        Self::ALL.iter().copied().find(|icon| icon.as_str() == name)
    }
}