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