diff --git a/book-examples/dioxus/src/icons.rs b/book-examples/dioxus/src/icons.rs index 588e71b..26fa979 100644 --- a/book-examples/dioxus/src/icons.rs +++ b/book-examples/dioxus/src/icons.rs @@ -9293,6 +9293,12 @@ pub fn IconsT1() -> Element { }, "Toilet", ), + ( + rsx! { + ToolCase {} + }, + "Tool Case", + ), ( rsx! { Tornado {} diff --git a/book-examples/leptos/src/icons.rs b/book-examples/leptos/src/icons.rs index 238cc43..f4af786 100644 --- a/book-examples/leptos/src/icons.rs +++ b/book-examples/leptos/src/icons.rs @@ -1898,6 +1898,7 @@ pub fn IconsT() -> impl IntoView { (view! { }.into_any(), "Toggle Left"), (view! { }.into_any(), "Toggle Right"), (view! { }.into_any(), "Toilet"), + (view! { }.into_any(), "Tool Case"), (view! { }.into_any(), "Tornado"), (view! { }.into_any(), "Torus"), (view! { }.into_any(), "Touchpad"), diff --git a/book-examples/yew/src/icons.rs b/book-examples/yew/src/icons.rs index dd33c0c..97c6c60 100644 --- a/book-examples/yew/src/icons.rs +++ b/book-examples/yew/src/icons.rs @@ -1943,6 +1943,7 @@ pub fn IconsT() -> Html { (html! { }, "Toggle Left"), (html! { }, "Toggle Right"), (html! { }, "Toilet"), + (html! { }, "Tool Case"), (html! { }, "Tornado"), (html! { }, "Torus"), (html! { }, "Touchpad"), diff --git a/packages/dioxus/src/flag.rs b/packages/dioxus/src/flag.rs index c7f699d..895aa31 100644 --- a/packages/dioxus/src/flag.rs +++ b/packages/dioxus/src/flag.rs @@ -34,13 +34,7 @@ pub fn Flag(props: FlagProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z" } - line { - "x1": "4", - "x2": "4", - "y1": "22", - "y2": "15", - } + path { "d": "M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528" } } } } diff --git a/packages/dioxus/src/flag_off.rs b/packages/dioxus/src/flag_off.rs index 0e64a83..b32e434 100644 --- a/packages/dioxus/src/flag_off.rs +++ b/packages/dioxus/src/flag_off.rs @@ -34,15 +34,10 @@ pub fn FlagOff(props: FlagOffProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "M8 2c3 0 5 2 8 2s4-1 4-1v11" } + path { "d": "M16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528" } + path { "d": "m2 2 20 20" } path { "d": "M4 22V4" } - path { "d": "M4 15s1-1 4-1 5 2 8 2" } - line { - "x1": "2", - "x2": "22", - "y1": "2", - "y2": "22", - } + path { "d": "M7.656 2H8c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10.347" } } } } diff --git a/packages/dioxus/src/lib.rs b/packages/dioxus/src/lib.rs index 7c1b460..c6f711d 100644 --- a/packages/dioxus/src/lib.rs +++ b/packages/dioxus/src/lib.rs @@ -3715,6 +3715,8 @@ mod toggle_left; mod toggle_right; #[cfg(any(feature = "devices", feature = "home"))] mod toilet; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +mod tool_case; #[cfg(feature = "weather")] mod tornado; #[cfg(any( @@ -7806,6 +7808,8 @@ pub use toggle_left::*; pub use toggle_right::*; #[cfg(any(feature = "devices", feature = "home"))] pub use toilet::*; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +pub use tool_case::*; #[cfg(feature = "weather")] pub use tornado::*; #[cfg(any( diff --git a/packages/dioxus/src/megaphone.rs b/packages/dioxus/src/megaphone.rs index 6e0b000..bd3bdca 100644 --- a/packages/dioxus/src/megaphone.rs +++ b/packages/dioxus/src/megaphone.rs @@ -34,8 +34,9 @@ pub fn Megaphone(props: MegaphoneProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "m3 11 18-5v12L3 14v-3z" } - path { "d": "M11.6 16.8a3 3 0 1 1-5.8-1.6" } + path { "d": "M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z" } + path { "d": "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14" } + path { "d": "M8 6v8" } } } } diff --git a/packages/dioxus/src/megaphone_off.rs b/packages/dioxus/src/megaphone_off.rs index c1fe5f8..9006ab9 100644 --- a/packages/dioxus/src/megaphone_off.rs +++ b/packages/dioxus/src/megaphone_off.rs @@ -34,15 +34,11 @@ pub fn MegaphoneOff(props: MegaphoneOffProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "M9.26 9.26 3 11v3l14.14 3.14" } - path { "d": "M21 15.34V6l-7.31 2.03" } - path { "d": "M11.6 16.8a3 3 0 1 1-5.8-1.6" } - line { - "x1": "2", - "x2": "22", - "y1": "2", - "y2": "22", - } + path { "d": "M11.636 6A13 13 0 0 0 19.4 3.2 1 1 0 0 1 21 4v11.344" } + path { "d": "M14.378 14.357A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h1" } + path { "d": "m2 2 20 20" } + path { "d": "M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14" } + path { "d": "M8 8v6" } } } } diff --git a/packages/dioxus/src/shrub.rs b/packages/dioxus/src/shrub.rs index a6badaf..7aae041 100644 --- a/packages/dioxus/src/shrub.rs +++ b/packages/dioxus/src/shrub.rs @@ -34,9 +34,9 @@ pub fn Shrub(props: ShrubProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "M12 22v-7l-2-2" } - path { "d": "M17 8v.8A6 6 0 0 1 13.8 20H10A6.5 6.5 0 0 1 7 8a5 5 0 0 1 10 0Z" } - path { "d": "m14 14-2 2" } + path { "d": "M12 22v-5.172a2 2 0 0 0-.586-1.414L9.5 13.5" } + path { "d": "M14.5 14.5 12 17" } + path { "d": "M17 8.8A6 6 0 0 1 13.8 20H10A6.5 6.5 0 0 1 7 8a5 5 0 0 1 10 0z" } } } } diff --git a/packages/dioxus/src/sun_moon.rs b/packages/dioxus/src/sun_moon.rs index 6937983..b7b1754 100644 --- a/packages/dioxus/src/sun_moon.rs +++ b/packages/dioxus/src/sun_moon.rs @@ -34,15 +34,11 @@ pub fn SunMoon(props: SunMoonProps) -> Element { "stroke-width": "{stroke_width}", "stroke-linecap": "round", "stroke-linejoin": "round", - path { "d": "M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4" } path { "d": "M12 2v2" } - path { "d": "M12 20v2" } - path { "d": "m4.9 4.9 1.4 1.4" } - path { "d": "m17.7 17.7 1.4 1.4" } - path { "d": "M2 12h2" } + path { "d": "M13 8.129A4 4 0 0 1 15.873 11" } + path { "d": "m19 5-1.256 1.256" } path { "d": "M20 12h2" } - path { "d": "m6.3 17.7-1.4 1.4" } - path { "d": "m19.1 4.9-1.4 1.4" } + path { "d": "M9 8a5 5 0 1 0 7 7 7 7 0 1 1-7-7" } } } } diff --git a/packages/dioxus/src/tool_case.rs b/packages/dioxus/src/tool_case.rs new file mode 100644 index 0000000..2c370ea --- /dev/null +++ b/packages/dioxus/src/tool_case.rs @@ -0,0 +1,43 @@ +use dioxus::prelude::*; +#[derive(Clone, PartialEq, Props)] +pub struct ToolCaseProps { + #[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 ToolCase(props: ToolCaseProps) -> 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 15h4" } + path { "d": "m14.817 10.995-.971-1.45 1.034-1.232a2 2 0 0 0-2.025-3.238l-1.82.364L9.91 3.885a2 2 0 0 0-3.625.748L6.141 6.55l-1.725.426a2 2 0 0 0-.19 3.756l.657.27" } + path { "d": "m18.822 10.995 2.26-5.38a1 1 0 0 0-.557-1.318L16.954 2.9a1 1 0 0 0-1.281.533l-.924 2.122" } + path { "d": "M4 12.006A1 1 0 0 1 4.994 11H19a1 1 0 0 1 1 1v7a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2z" } + } + } +} diff --git a/packages/leptos/src/flag.rs b/packages/leptos/src/flag.rs index bc3c44d..483762b 100644 --- a/packages/leptos/src/flag.rs +++ b/packages/leptos/src/flag.rs @@ -29,8 +29,7 @@ pub fn Flag( stroke-linecap="round" stroke-linejoin="round" > - - + } } diff --git a/packages/leptos/src/flag_off.rs b/packages/leptos/src/flag_off.rs index 80dde7f..39a5105 100644 --- a/packages/leptos/src/flag_off.rs +++ b/packages/leptos/src/flag_off.rs @@ -29,10 +29,10 @@ pub fn FlagOff( stroke-linecap="round" stroke-linejoin="round" > - + + - - + } } diff --git a/packages/leptos/src/lib.rs b/packages/leptos/src/lib.rs index 47528a2..6eb515c 100644 --- a/packages/leptos/src/lib.rs +++ b/packages/leptos/src/lib.rs @@ -3715,6 +3715,8 @@ mod toggle_left; mod toggle_right; #[cfg(any(feature = "devices", feature = "home"))] mod toilet; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +mod tool_case; #[cfg(feature = "weather")] mod tornado; #[cfg(any( @@ -7806,6 +7808,8 @@ pub use toggle_left::*; pub use toggle_right::*; #[cfg(any(feature = "devices", feature = "home"))] pub use toilet::*; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +pub use tool_case::*; #[cfg(feature = "weather")] pub use tornado::*; #[cfg(any( diff --git a/packages/leptos/src/megaphone.rs b/packages/leptos/src/megaphone.rs index 9562c39..78a918f 100644 --- a/packages/leptos/src/megaphone.rs +++ b/packages/leptos/src/megaphone.rs @@ -29,8 +29,9 @@ pub fn Megaphone( stroke-linecap="round" stroke-linejoin="round" > - - + + + } } diff --git a/packages/leptos/src/megaphone_off.rs b/packages/leptos/src/megaphone_off.rs index e38ffa4..8a83958 100644 --- a/packages/leptos/src/megaphone_off.rs +++ b/packages/leptos/src/megaphone_off.rs @@ -29,10 +29,11 @@ pub fn MegaphoneOff( stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + + } } diff --git a/packages/leptos/src/shrub.rs b/packages/leptos/src/shrub.rs index 9bb50d5..bfaaf08 100644 --- a/packages/leptos/src/shrub.rs +++ b/packages/leptos/src/shrub.rs @@ -29,9 +29,9 @@ pub fn Shrub( stroke-linecap="round" stroke-linejoin="round" > - - - + + + } } diff --git a/packages/leptos/src/sun_moon.rs b/packages/leptos/src/sun_moon.rs index f3a02a1..53dd8b4 100644 --- a/packages/leptos/src/sun_moon.rs +++ b/packages/leptos/src/sun_moon.rs @@ -29,15 +29,11 @@ pub fn SunMoon( stroke-linecap="round" stroke-linejoin="round" > - - - - - + + - - + } } diff --git a/packages/leptos/src/tool_case.rs b/packages/leptos/src/tool_case.rs new file mode 100644 index 0000000..cf5a591 --- /dev/null +++ b/packages/leptos/src/tool_case.rs @@ -0,0 +1,38 @@ +use leptos::{prelude::*, svg::Svg}; +#[component] +pub fn ToolCase( + #[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, +) -> impl IntoView { + let stroke_width = Signal::derive(move || { + if absolute_stroke_width.get() { + stroke_width.get() * 24 / size.get() + } else { + stroke_width.get() + } + }); + view! { + + + + + + + } +} diff --git a/packages/yew/src/flag.rs b/packages/yew/src/flag.rs index 173621b..3754b91 100644 --- a/packages/yew/src/flag.rs +++ b/packages/yew/src/flag.rs @@ -41,8 +41,9 @@ pub fn Flag(props: &FlagProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - - + } } diff --git a/packages/yew/src/flag_off.rs b/packages/yew/src/flag_off.rs index d124de0..2c8e87e 100644 --- a/packages/yew/src/flag_off.rs +++ b/packages/yew/src/flag_off.rs @@ -41,10 +41,10 @@ pub fn FlagOff(props: &FlagOffProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - + + - - + } } diff --git a/packages/yew/src/lib.rs b/packages/yew/src/lib.rs index 5ba62a2..eb2d187 100644 --- a/packages/yew/src/lib.rs +++ b/packages/yew/src/lib.rs @@ -3717,6 +3717,8 @@ mod toggle_left; mod toggle_right; #[cfg(any(feature = "devices", feature = "home"))] mod toilet; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +mod tool_case; #[cfg(feature = "weather")] mod tornado; #[cfg(any( @@ -7808,6 +7810,8 @@ pub use toggle_left::*; pub use toggle_right::*; #[cfg(any(feature = "devices", feature = "home"))] pub use toilet::*; +#[cfg(any(feature = "tools", feature = "development", feature = "home"))] +pub use tool_case::*; #[cfg(feature = "weather")] pub use tornado::*; #[cfg(any( diff --git a/packages/yew/src/megaphone.rs b/packages/yew/src/megaphone.rs index ddcb8e2..80ead76 100644 --- a/packages/yew/src/megaphone.rs +++ b/packages/yew/src/megaphone.rs @@ -41,8 +41,11 @@ pub fn Megaphone(props: &MegaphoneProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - - + + + } } diff --git a/packages/yew/src/megaphone_off.rs b/packages/yew/src/megaphone_off.rs index ffb1b94..79078c5 100644 --- a/packages/yew/src/megaphone_off.rs +++ b/packages/yew/src/megaphone_off.rs @@ -41,10 +41,11 @@ pub fn MegaphoneOff(props: &MegaphoneOffProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - - - - + + + + + } } diff --git a/packages/yew/src/shrub.rs b/packages/yew/src/shrub.rs index 954bd20..1f50661 100644 --- a/packages/yew/src/shrub.rs +++ b/packages/yew/src/shrub.rs @@ -41,9 +41,9 @@ pub fn Shrub(props: &ShrubProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - - - + + + } } diff --git a/packages/yew/src/sun_moon.rs b/packages/yew/src/sun_moon.rs index 3ae7f7f..31f2584 100644 --- a/packages/yew/src/sun_moon.rs +++ b/packages/yew/src/sun_moon.rs @@ -41,15 +41,11 @@ pub fn SunMoon(props: &SunMoonProps) -> Html { stroke-linecap="round" stroke-linejoin="round" > - - - - - + + - - + } } diff --git a/packages/yew/src/tool_case.rs b/packages/yew/src/tool_case.rs new file mode 100644 index 0000000..e9136e4 --- /dev/null +++ b/packages/yew/src/tool_case.rs @@ -0,0 +1,56 @@ +use yew::prelude::*; +#[derive(PartialEq, Properties)] +pub struct ToolCaseProps { + #[prop_or(24)] + pub size: usize, + #[prop_or(AttrValue::from("currentColor"))] + pub color: AttrValue, + #[prop_or(AttrValue::from("none"))] + pub fill: AttrValue, + #[prop_or(2)] + pub stroke_width: usize, + #[prop_or(false)] + pub absolute_stroke_width: bool, + #[prop_or_default] + pub class: Classes, + #[prop_or_default] + pub style: std::option::Option, + #[prop_or_default] + pub node_ref: NodeRef, +} +#[function_component] +pub fn ToolCase(props: &ToolCaseProps) -> Html { + let stroke_width = if props.absolute_stroke_width { + props.stroke_width * 24 / props.size + } else { + props.stroke_width + }; + html! { + + + + + + + } +} diff --git a/scripts/src/lib.rs b/scripts/src/lib.rs index cae769d..08d05b9 100644 --- a/scripts/src/lib.rs +++ b/scripts/src/lib.rs @@ -11,5 +11,5 @@ pub const GITHUB_OWNER: &str = "RustForWeb"; pub const GITHUB_REPO: &str = "lucide"; pub const UPSTREAM_GIT_URL: &str = "https://github.com/lucide-icons/lucide.git"; -pub const UPSTREAM_GIT_REF: &str = "0.524.0"; +pub const UPSTREAM_GIT_REF: &str = "0.525.0"; pub const UPSTREAM_GITHUB_URL: &str = "https://github.com/lucide-icons/lucide";