1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::*;
pub fn toggle(on: impl Binding<bool>) -> impl View {
state(
|| (),
move |_, cx| {
let b = *on.get(cx);
zstack((
rectangle()
.color(if b {
AZURE_HIGHLIGHT_BACKGROUND
} else {
CONTROL_BACKGROUND
})
.corner_radius(10.0)
.size([40.0, 20.0])
.tap(move |cx| on.with_mut(cx, |b| *b = !*b)),
circle()
.color(if b { AZURE_HIGHLIGHT } else { MEDIUM_GRAY })
.size([10.0, 10.0])
.offset([if b { 25.0 } else { 5.0 }, 5.0]),
))
},
)
}