Skip to main content

plait_heroicons/
lib.rs

1//! [Heroicons](https://heroicons.com) as [`plait`](https://crates.io/crates/plait) components.
2//!
3//! # Usage
4//!
5//! Icons are organized into four modules, matching the Heroicons styles:
6//!
7//! | Module      | Size | Style   |
8//! |-------------|------|---------|
9//! | [`outline`] | 24px | Outline |
10//! | [`solid`]   | 24px | Solid   |
11//! | [`mini`]    | 20px | Solid   |
12//! | [`micro`]   | 16px | Solid   |
13//!
14//! Each icon is a component function named in PascalCase after the original SVG filename (e.g. `academic-cap.svg`
15//! becomes `AcademicCap`).
16//!
17//! ```rust
18//! use plait::component;
19//! use plait_heroicons::outline;
20//!
21//! component! {
22//!     pub fn Navbar() {
23//!         nav {
24//!             @outline::BellAlert() {}
25//!             @outline::UserCircle() {}
26//!         }
27//!     }
28//! }
29//! ```
30//!
31//! You can use icons from different styles in the same component:
32//!
33//! ```rust
34//! use plait::component;
35//! use plait_heroicons::{solid, mini};
36//!
37//! component! {
38//!     pub fn Controls() {
39//!         div {
40//!             @solid::PlayCircle() {}
41//!             @mini::ChevronDown() {}
42//!         }
43//!     }
44//! }
45//! ```
46
47/// 24px outline icons.
48pub mod outline {
49    use plait::component;
50    include!(concat!(env!("OUT_DIR"), "/outline.rs"));
51}
52
53/// 24px solid icons.
54pub mod solid {
55    use plait::component;
56    include!(concat!(env!("OUT_DIR"), "/solid.rs"));
57}
58
59/// 20px solid (mini) icons.
60pub mod mini {
61    use plait::component;
62    include!(concat!(env!("OUT_DIR"), "/mini.rs"));
63}
64
65/// 16px solid (micro) icons.
66pub mod micro {
67    use plait::component;
68    include!(concat!(env!("OUT_DIR"), "/micro.rs"));
69}