1/// Click the button — the `.active()` background gets stuck on every other click.
2use gpui::*;
3use gpui_platform::application;
4
5struct Example;
6
7impl Render for Example {
8 fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
9 // Colors from Zed's default dark theme
10 let bg = hsla(215. / 360., 0.12, 0.15, 1.);
11 let text = hsla(221. / 360., 0.11, 0.86, 1.);
12 let hover = hsla(225. / 360., 0.118, 0.267, 1.);
13 let active = hsla(220. / 360., 0.118, 0.20, 1.);
14
15 div().bg(bg).size_full().p_1().child(
16 div()
17 .id("button")
18 .px_2()
19 .py_0p5()
20 .rounded_md()
21 .text_sm()
22 .text_color(text)
23 .hover(|s| s.bg(hover))
24 .active(|s| s.bg(active))
25 .on_click(|_, _, _| {})
26 .child("Click me"),
27 )
28 }
29}
30
31fn main() {
32 application().run(|cx: &mut App| {
33 cx.open_window(
34 WindowOptions {
35 window_bounds: Some(WindowBounds::Windowed(Bounds::centered(
36 None,
37 size(px(200.), px(60.)),
38 cx,
39 ))),
40 ..Default::default()
41 },
42 |_, cx| cx.new(|_| Example),
43 )
44 .unwrap();
45 cx.activate(true);
46 });
47}