1mod comp;
4mod tag;
5mod text;
6
7pub use comp::Comp;
8pub use tag::Tag;
9pub use text::Text;
10
11use std::borrow::Cow;
12use yew::virtual_dom as vdom;
13
14pub fn tag(tag: impl Into<Cow<'static, str>>) -> Tag {
15 Tag::new(tag)
16}
17
18pub fn text(text: impl Into<vdom::AttrValue>) -> Text {
19 Text::new(text)
20}
21
22pub fn input() -> Tag<tag::TagTypeInput> {
23 Tag::input()
24}
25
26pub fn checkbox() -> Tag<tag::TagTypeInput> {
27 input().type_checkbox()
28}
29
30pub fn slider(min: i32, max: i32, value: i32) -> Tag<tag::TagTypeInput> {
31 input()
32 .attr("type", "range")
33 .attr("min", min.to_string())
34 .attr("max", max.to_string())
35 .value(value.to_string())
36}
37
38pub fn comp_with<'a, T>(props: T::Properties) -> Comp<'a, T>
39where
40 T: yew::BaseComponent,
41{
42 Comp::new(props)
43}
44
45pub fn comp<'a, T>() -> Comp<'a, T>
46where
47 T: yew::BaseComponent,
48 <T as yew::BaseComponent>::Properties: Default,
49{
50 Comp::new(Default::default())
51}
52
53macro_rules! known_tag {
54 ( $arg:ident ) => {
55 pub fn $arg() -> Tag {
56 tag(stringify!($arg))
57 }
58 };
59}
60
61known_tag!(a);
62known_tag!(abbr);
63known_tag!(acronym);
64known_tag!(address);
65known_tag!(applet);
66known_tag!(area);
67known_tag!(article);
68known_tag!(aside);
69known_tag!(audio);
70known_tag!(b);
71known_tag!(base);
72known_tag!(basefont);
73known_tag!(bdi);
74known_tag!(bdo);
75known_tag!(bgsound);
76known_tag!(big);
77known_tag!(blink);
78known_tag!(blockquote);
79known_tag!(body);
80known_tag!(br);
81known_tag!(button);
82known_tag!(canvas);
83known_tag!(caption);
84known_tag!(center);
85known_tag!(cite);
86known_tag!(code);
87known_tag!(col);
88known_tag!(colgroup);
89known_tag!(content);
90known_tag!(data);
91known_tag!(datalist);
92known_tag!(dd);
93known_tag!(del);
94known_tag!(details);
95known_tag!(dfn);
96known_tag!(dialog);
97known_tag!(dir);
98known_tag!(div);
99known_tag!(dl);
100known_tag!(dt);
101known_tag!(em);
102known_tag!(embed);
103known_tag!(fieldset);
104known_tag!(figcaption);
105known_tag!(figure);
106known_tag!(font);
107known_tag!(footer);
108known_tag!(form);
109known_tag!(frame);
110known_tag!(frameset);
111known_tag!(h1);
112known_tag!(h2);
113known_tag!(h3);
114known_tag!(h4);
115known_tag!(h5);
116known_tag!(h6);
117known_tag!(head);
118known_tag!(header);
119known_tag!(hgroup);
120known_tag!(hr);
121known_tag!(html);
122known_tag!(i);
123known_tag!(iframe);
124known_tag!(image);
125known_tag!(img);
126known_tag!(ins);
128known_tag!(kbd);
129known_tag!(keygen);
130known_tag!(label);
131known_tag!(legend);
132known_tag!(li);
133known_tag!(link);
134known_tag!(main);
135known_tag!(map);
136known_tag!(mark);
137known_tag!(marquee);
138known_tag!(math);
139known_tag!(menu);
140known_tag!(menuitem);
141known_tag!(meta);
142known_tag!(meter);
143known_tag!(nav);
144known_tag!(nobr);
145known_tag!(noembed);
146known_tag!(noframes);
147known_tag!(noscript);
148known_tag!(object);
149known_tag!(ol);
150known_tag!(optgroup);
151known_tag!(option);
152known_tag!(output);
153known_tag!(p);
154known_tag!(param);
155known_tag!(picture);
156known_tag!(plaintext);
157known_tag!(portal);
158known_tag!(pre);
159known_tag!(progress);
160known_tag!(q);
161known_tag!(rb);
162known_tag!(rp);
163known_tag!(rt);
164known_tag!(rtc);
165known_tag!(ruby);
166known_tag!(s);
167known_tag!(samp);
168known_tag!(script);
169known_tag!(section);
170known_tag!(select);
171known_tag!(shadow);
172known_tag!(slot);
173known_tag!(small);
174known_tag!(source);
175known_tag!(spacer);
176known_tag!(span);
177known_tag!(strike);
178known_tag!(strong);
179known_tag!(style);
180known_tag!(sub);
181known_tag!(summary);
182known_tag!(sup);
183known_tag!(svg);
184known_tag!(table);
185known_tag!(tbody);
186known_tag!(td);
187known_tag!(template);
188known_tag!(textarea);
189known_tag!(tfoot);
190known_tag!(th);
191known_tag!(thead);
192known_tag!(time);
193known_tag!(title);
194known_tag!(tr);
195known_tag!(track);
196known_tag!(tt);
197known_tag!(u);
198known_tag!(ul);
199known_tag!(var);
200known_tag!(video);
201known_tag!(wbr);
202known_tag!(xmp);
203
204#[cfg(feature = "yew-router")]
208mod link;
209
210#[cfg(feature = "yew-router")]
211pub use link::Link;
212
213#[cfg(feature = "yew-router")]
214pub fn yew_link<R: yew_router::Routable + 'static>(to: R) -> Link<R> {
215 Link::new(to)
216}