rollup-plugin-gleam

Vite compatible Rollup plugin for Gleam language

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 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
}