diff --git a/book-examples/dioxus/src/icons.rs b/book-examples/dioxus/src/icons.rs
index 0468101..c8f8d1f 100644
--- a/book-examples/dioxus/src/icons.rs
+++ b/book-examples/dioxus/src/icons.rs
@@ -890,6 +890,12 @@ pub fn IconsB1() -> Element {
},
"Barcode",
),
+ (
+ rsx! {
+ Barrel {}
+ },
+ "Barrel",
+ ),
(
rsx! {
Baseline {}
@@ -1316,12 +1322,6 @@ pub fn IconsB1() -> Element {
},
"Book User",
),
- (
- rsx! {
- BookX {}
- },
- "Book X",
- ),
];
rsx! {
for (icon , name) in icons {
@@ -1337,6 +1337,12 @@ pub fn IconsB1() -> Element {
#[component]
pub fn IconsB2() -> Element {
let icons = [
+ (
+ rsx! {
+ BookX {}
+ },
+ "Book X",
+ ),
(
rsx! {
Bookmark {}
diff --git a/book-examples/leptos/src/icons.rs b/book-examples/leptos/src/icons.rs
index d46dadf..1f8310b 100644
--- a/book-examples/leptos/src/icons.rs
+++ b/book-examples/leptos/src/icons.rs
@@ -233,6 +233,7 @@ pub fn IconsB() -> impl IntoView {
(view! { }.into_any(), "Banknote Arrow Up"),
(view! { }.into_any(), "Banknote X"),
(view! { }.into_any(), "Barcode"),
+ (view! { }.into_any(), "Barrel"),
(view! { }.into_any(), "Baseline"),
(view! { }.into_any(), "Bath"),
(view! { }.into_any(), "Battery"),
diff --git a/book-examples/yew/src/icons.rs b/book-examples/yew/src/icons.rs
index 256ce6c..8634ba7 100644
--- a/book-examples/yew/src/icons.rs
+++ b/book-examples/yew/src/icons.rs
@@ -239,6 +239,7 @@ pub fn IconsB() -> Html {
(html! { }, "Banknote Arrow Up"),
(html! { }, "Banknote X"),
(html! { }, "Barcode"),
+ (html! { }, "Barrel"),
(html! { }, "Baseline"),
(html! { }, "Bath"),
(html! { }, "Battery"),
diff --git a/packages/dioxus/src/barrel.rs b/packages/dioxus/src/barrel.rs
new file mode 100644
index 0000000..b9a875a
--- /dev/null
+++ b/packages/dioxus/src/barrel.rs
@@ -0,0 +1,44 @@
+use dioxus::prelude::*;
+#[derive(Clone, PartialEq, Props)]
+pub struct BarrelProps {
+ #[props(default = 24)]
+ pub size: usize,
+ #[props(default = "currentColor".to_owned())]
+ pub color: String,
+ #[props(default = "none".to_owned())]
+ pub fill: String,
+ #[props(default = 2)]
+ pub stroke_width: usize,
+ #[props(default = false)]
+ pub absolute_stroke_width: bool,
+ pub class: Option,
+ pub style: Option,
+}
+#[component]
+pub fn Barrel(props: BarrelProps) -> Element {
+ let stroke_width = if props.absolute_stroke_width {
+ props.stroke_width * 24 / props.size
+ } else {
+ props.stroke_width
+ };
+ rsx! {
+ svg {
+ "xmlns": "http://www.w3.org/2000/svg",
+ "class": if let Some(class) = props.class { "{class}" },
+ "style": if let Some(style) = props.style { "{style}" },
+ "width": "{props.size}",
+ "height": "{props.size}",
+ "viewBox": "0 0 24 24",
+ "fill": "{props.fill}",
+ "stroke": "{props.color}",
+ "stroke-width": "{stroke_width}",
+ "stroke-linecap": "round",
+ "stroke-linejoin": "round",
+ path { "d": "M10 3a41 41 0 0 0 0 18" }
+ path { "d": "M14 3a41 41 0 0 1 0 18" }
+ path { "d": "M17 3a2 2 0 0 1 1.68.92 15.25 15.25 0 0 1 0 16.16A2 2 0 0 1 17 21H7a2 2 0 0 1-1.68-.92 15.25 15.25 0 0 1 0-16.16A2 2 0 0 1 7 3z" }
+ path { "d": "M3.84 17h16.32" }
+ path { "d": "M3.84 7h16.32" }
+ }
+ }
+}
diff --git a/packages/dioxus/src/lib.rs b/packages/dioxus/src/lib.rs
index dbd9360..47c4b41 100644
--- a/packages/dioxus/src/lib.rs
+++ b/packages/dioxus/src/lib.rs
@@ -329,6 +329,8 @@ mod banknote_arrow_up;
mod banknote_x;
#[cfg(feature = "shopping")]
mod barcode;
+#[cfg(any(feature = "food-beverage", feature = "navigation"))]
+mod barrel;
#[cfg(feature = "text")]
mod baseline;
#[cfg(feature = "travel")]
@@ -4399,6 +4401,8 @@ pub use banknote_arrow_up::*;
pub use banknote_x::*;
#[cfg(feature = "shopping")]
pub use barcode::*;
+#[cfg(any(feature = "food-beverage", feature = "navigation"))]
+pub use barrel::*;
#[cfg(feature = "text")]
pub use baseline::*;
#[cfg(feature = "travel")]
diff --git a/packages/leptos/src/barrel.rs b/packages/leptos/src/barrel.rs
new file mode 100644
index 0000000..868d0f4
--- /dev/null
+++ b/packages/leptos/src/barrel.rs
@@ -0,0 +1,39 @@
+use leptos::{prelude::*, svg::Svg};
+#[component]
+pub fn Barrel(
+ #[prop(default = 24.into(), into)] size: Signal,
+ #[prop(default = "currentColor".into(), into)] color: Signal,
+ #[prop(default = "none".into(), into)] fill: Signal,
+ #[prop(default = 2.into(), into)] stroke_width: Signal,
+ #[prop(default = false.into(), into)] absolute_stroke_width: Signal,
+ #[prop(optional)] node_ref: NodeRef