-
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
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
import gleam/string
import lustre
import lustre/attribute.{attribute, id}
import lustre/element.{type Element}
import lustre/element/html
// MODEL
pub type Model =
String
fn init(_) -> Model {
"World"
}
// UPDATE
pub type Msg {
Reverse
}
fn update(model: Model, msg: Msg) -> Model {
case msg {
Reverse -> string.reverse(model)
}
}
// VIEW
fn view(model: Model) -> Element(Msg) {
html.div([], [
html.p([id("greeting")], [element.text("Hello, "), element.text(model)]),
html.button([attribute("aria-controls", "greeting")], [
element.text("Reverse"),
]),
])
}
// MAIN
pub fn main() {
let app = lustre.simple(init, update, view)
let assert Ok(_) = lustre.start(app, "#app", Nil)
Nil
}