zuicon_mdl2/
shared_database.rs1use yew::prelude::{html, Component, Context, Html, Properties};
8
9pub struct SharedDatabase {}
10
11#[derive(Properties, Debug, Clone, PartialEq, Eq)]
12pub struct Props {
13 #[prop_or_default]
14 pub class: Option<&'static str>,
15
16 #[prop_or_default]
17 pub width: Option<&'static str>,
18
19 #[prop_or_default]
20 pub height: Option<&'static str>,
21
22 #[prop_or_default]
23 pub color: Option<&'static str>,
24
25 #[prop_or_default]
26 pub fill: Option<&'static str>,
27
28 #[prop_or_default]
29 pub spin: bool,
30
31 #[prop_or_default]
32 pub rotate: i16,
33}
34
35impl Component for SharedDatabase {
36 type Properties = Props;
37 type Message = ();
38
39 fn create(_ctx: &Context<Self>) -> Self {
40 Self {}
41 }
42
43 fn view(&self, ctx: &Context<Self>) -> Html {
44 let props = ctx.props();
45 let mut style = String::new();
47 if props.rotate != 0 {
48 style += &format!("transform: rotate({}deg);", props.rotate);
49 }
50 html! {
51 <svg
52 xmlns={ "http://www.w3.org/2000/svg" }
53 class={ props.class.unwrap_or("") }
54 width={ props.width.unwrap_or("16") }
55 height={ props.height.unwrap_or("16") }
56 focusable={ "false" }
57 data-icon={ "SharedDatabase" }
58 viewBox={ "0 0 16 16" }
59 fill={ props.fill.unwrap_or("currentColor") }
60 style={ style }
61 >
62 <path d="M960 768q-68 0-144-6t-153-22-149-41-130-62v963q0 20 13 35t27 28q30 26 71 45t88 33 99 24 101 16 96 8 86 3q60 0 116-5t116-16q-6 10-16 28t-19 39-16 40-7 31q-42 8-88 9t-90 2q-33 0-81-2t-104-10-116-18-118-29-110-42-91-55-62-73-23-91V448q0-68 38-118t101-85 139-59 156-35 150-18 120-5q49 0 120 4t149 18 156 35 140 58 100 86 39 119v672q-33 0-65 6t-63 16V637q-58 37-130 62t-148 40-153 22-145 7zM384 448q0 11 3 19t10 17q24 32 65 55t91 41 106 29 110 18 104 10 87 3q38 0 87-3t103-10 110-18 105-29 91-41 66-55q14-17 14-36 0-11-4-19t-10-17q-25-31-65-55t-91-41-105-28-110-19-103-10-88-3q-37 0-86 3t-104 10-111 18-106 29-91 41-65 55q-6 8-9 16t-4 20zm1464 1265q46 25 83 61t63 79 40 93 14 102h-128q0-53-20-100t-54-81-82-55-100-20q-53 0-99 20t-82 55-55 81-20 100h-128q0-52 14-101t40-93 63-80 83-61q-35-35-53-81t-19-96q0-53 20-99t55-82 81-55 100-20q53 0 99 20t82 55 55 81 20 100q0 50-18 96t-54 81zm-184-49q26 0 49-10t41-27 28-41 10-50q0-26-10-49t-27-41-41-28-50-10q-27 0-50 10t-40 27-28 41-10 50q0 27 10 50t27 40 41 28 50 10z" />
63 </svg>
64 }
65 }
66}