dioxus_bulma/components/
level.rs1use dioxus::prelude::*;
2use crate::utils::build_class;
3
4#[derive(Props, Clone, PartialEq)]
5pub struct LevelProps {
6 #[props(default)]
7 pub mobile: Option<bool>,
8 #[props(default)]
9 pub id: Option<String>,
10 #[props(default)]
11 pub class: Option<String>,
12 #[props(default)]
13 pub style: Option<String>,
14 pub children: Element,
15}
16
17#[component]
18pub fn Level(props: LevelProps) -> Element {
19 let mobile = props.mobile.unwrap_or(false);
20
21 let base_classes = vec!["level"];
22 let optional_classes = vec![
23 if mobile { Some("is-mobile".to_string()) } else { None },
24 props.class.clone(),
25 ];
26
27 let final_class = build_class(&base_classes, &optional_classes);
28 let level_style = props.style.as_deref().unwrap_or("");
29
30 rsx! {
31 nav {
32 class: "{final_class}",
33 style: "{level_style}",
34 id: props.id.clone(),
35 {props.children}
36 }
37 }
38}
39
40#[derive(Props, Clone, PartialEq)]
41pub struct LevelLeftProps {
42 #[props(default)]
43 pub id: Option<String>,
44 #[props(default)]
45 pub class: Option<String>,
46 #[props(default)]
47 pub style: Option<String>,
48 pub children: Element,
49}
50
51#[component]
52pub fn LevelLeft(props: LevelLeftProps) -> Element {
53 let base_classes = vec!["level-left"];
54 let optional_classes = vec![props.class.clone()];
55 let final_class = build_class(&base_classes, &optional_classes);
56 let style = props.style.as_deref().unwrap_or("");
57
58 rsx! {
59 div {
60 class: "{final_class}",
61 style: "{style}",
62 {props.children}
63 }
64 }
65}
66
67#[derive(Props, Clone, PartialEq)]
68pub struct LevelRightProps {
69 #[props(default)]
70 pub id: Option<String>,
71 #[props(default)]
72 pub class: Option<String>,
73 #[props(default)]
74 pub style: Option<String>,
75 pub children: Element,
76}
77
78#[component]
79pub fn LevelRight(props: LevelRightProps) -> Element {
80 let base_classes = vec!["level-right"];
81 let optional_classes = vec![props.class.clone()];
82 let final_class = build_class(&base_classes, &optional_classes);
83 let style = props.style.as_deref().unwrap_or("");
84
85 rsx! {
86 div {
87 class: "{final_class}",
88 style: "{style}",
89 {props.children}
90 }
91 }
92}
93
94#[derive(Props, Clone, PartialEq)]
95pub struct LevelItemProps {
96 #[props(default)]
97 pub id: Option<String>,
98 #[props(default)]
99 pub class: Option<String>,
100 #[props(default)]
101 pub style: Option<String>,
102 pub children: Element,
103}
104
105#[component]
106pub fn LevelItem(props: LevelItemProps) -> Element {
107 let base_classes = vec!["level-item"];
108 let optional_classes = vec![props.class.clone()];
109 let final_class = build_class(&base_classes, &optional_classes);
110 let style = props.style.as_deref().unwrap_or("");
111
112 rsx! {
113 div {
114 class: "{final_class}",
115 style: "{style}",
116 {props.children}
117 }
118 }
119}