iconify 0.2.1

Proc-macros for generating icons from the Iconify API
Documentation
<h1 align="center">
    iconify-rs
</h1>

<p align="center">
    This crate provides a macro to embed SVGs from
    <a href="https://iconify.design/">Iconify</a>.
    For a list of icons, see
    <a href="https://icon-sets.iconify.design/">Iconify Icon Sets</a>.
</p>

<div align="center">
    <a href="https://crates.io/crates/iconify">
        <img alt="Crates.io" src="https://img.shields.io/crates/v/iconify.svg" />
    </a>
    <a href="./LICENSE">
        <img alt="Crates.io" src="https://img.shields.io/badge/license-MIT%2FApache-blue.svg" />
    </a>
    <a href="https://docs.rs/iconify/latest/iconify/">
        <img alt="docs.rs" src="https://img.shields.io/docsrs/iconify/latest" />
    </a>
</div>


## 📝 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 = "<svg>...</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 (Currently, a bug prevents you from using the full macro path. See [Issue #836](https://github.com/djc/askama/issues/836))

```jsx
<body>
  <div class="card">
    {{ svg!("mdi:home")|safe }}
    <p>Hello!</p>
</body>
```

## ✨ 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`.