This crate provides a macro to embed SVGs from Iconify. For a list of icons, see Iconify Icon Sets.
## 📝 Usage ```jsx let svg = iconify::svg!("mdi:home", color = "red") ``` `iconify::svg!` will download and embed an SVG as a string. It will also cache the request, so it won't download the same SVG twice. ```rust let svg = "" ``` ### Options You can pass options to the macro to customize the SVG. ```rust let svg = iconify::svg!("mdi:home", width = "24", height = "24", color = "red", // ... and more. ) ``` All options from the [Iconify API](https://iconify.design/docs/api/svg.html) are supported. You can find the documentation for the options for the `svg!` macro [here](https://docs.rs/iconify/latest/iconify/macro.svg.html). ### Templating It can also be used directly in rsx, or any compile-time template engine. Maud: ```rust html! { body { .card { (PreEscaped(iconify::svg!("mdi:home"))) p { "Hello!" } } } } ``` Askama ```jsxHello!
``` ## ✨ Features * Directly embed SVGs from Iconify * Caches requests (default feature) * Offline mode * SVG transforms (through API) * (Soon) CSS fetching ## 🔌 Offline Mode If you don't want iconify-rs to make requests at compile-time in CI (or other reasons), you can use offline mode with prepared icons. 1. Enable the `offline` feature. 2. Prepare icons by setting `ICONIFY_PREPARE=true` and running `cargo check`. This will generate a directory for you in `CARGO_MANIFEST_DIR` called `icons` with all the icons you invoked. 3. Now you're ready to go! Just run `cargo build` and it will use the icons you prepared. If you want to set a custom directory, you can also set `ICONIFY_OFFLINE_DIR`. ## ⚙️ Configuration - `ICONIFY_URL` - Sets the API url to use. If not set, the default is "https://api.iconify.design" - `ICONIFY_PREPARE` - If set, icons will be written to the offline icons directory (offline mode only) - `ICONIFY_OFFLINE_DIR` - Sets the offline icons directory. If not set, the default is "/icons" in your project directory