1use gpui::{
  2    App, Application, Bounds, Context, SharedString, Window, WindowBounds, WindowOptions, div,
  3    prelude::*, px, rgb, size,
  4};
  5
  6struct HelloWorld {
  7    text: SharedString,
  8}
  9
 10impl Render for HelloWorld {
 11    fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
 12        div()
 13            .flex()
 14            .flex_col()
 15            .gap_3()
 16            .bg(rgb(0x505050))
 17            .size(px(500.0))
 18            .justify_center()
 19            .items_center()
 20            .shadow_lg()
 21            .border_1()
 22            .border_color(rgb(0x0000ff))
 23            .text_xl()
 24            .text_color(rgb(0xffffff))
 25            .child(format!("Hello, {}!", &self.text))
 26            .child(
 27                div()
 28                    .flex()
 29                    .gap_2()
 30                    .child(
 31                        div()
 32                            .size_8()
 33                            .bg(gpui::red())
 34                            .border_1()
 35                            .border_dashed()
 36                            .rounded_md()
 37                            .border_color(gpui::white()),
 38                    )
 39                    .child(
 40                        div()
 41                            .size_8()
 42                            .bg(gpui::green())
 43                            .border_1()
 44                            .border_dashed()
 45                            .rounded_md()
 46                            .border_color(gpui::white()),
 47                    )
 48                    .child(
 49                        div()
 50                            .size_8()
 51                            .bg(gpui::blue())
 52                            .border_1()
 53                            .border_dashed()
 54                            .rounded_md()
 55                            .border_color(gpui::white()),
 56                    )
 57                    .child(
 58                        div()
 59                            .size_8()
 60                            .bg(gpui::yellow())
 61                            .border_1()
 62                            .border_dashed()
 63                            .rounded_md()
 64                            .border_color(gpui::white()),
 65                    )
 66                    .child(
 67                        div()
 68                            .size_8()
 69                            .bg(gpui::black())
 70                            .border_1()
 71                            .border_dashed()
 72                            .rounded_md()
 73                            .rounded_md()
 74                            .border_color(gpui::white()),
 75                    )
 76                    .child(
 77                        div()
 78                            .size_8()
 79                            .bg(gpui::white())
 80                            .border_1()
 81                            .border_dashed()
 82                            .rounded_md()
 83                            .border_color(gpui::black()),
 84                    ),
 85            )
 86    }
 87}
 88
 89fn main() {
 90    Application::new().run(|cx: &mut App| {
 91        let bounds = Bounds::centered(None, size(px(500.), px(500.0)), cx);
 92        cx.open_window(
 93            WindowOptions {
 94                window_bounds: Some(WindowBounds::Windowed(bounds)),
 95                ..Default::default()
 96            },
 97            |_, cx| {
 98                cx.new(|_| HelloWorld {
 99                    text: "World".into(),
100                })
101            },
102        )
103        .unwrap();
104        cx.activate(true);
105    });
106}