This crate provides a macro to embed SVGs from Iconify. For a list of icons, see Iconify Icon Sets.
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 = "<svg>...</svg>"
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 are supported. You can
find the documentation for the options for the svg!
macro here.
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 (Currently, a bug prevents you from using the full macro path. See Issue #836)
jsx
<body>
<div class="card">
{{ svg!("mdi:home")|safe }}
<p>Hello!</p>
</body>
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.
offline
feature.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.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
.