diff options
author | Hayleigh Thompson <me@hayleigh.dev> | 2023-09-19 23:40:03 +0100 |
---|---|---|
committer | Hayleigh Thompson <me@hayleigh.dev> | 2023-09-19 23:40:03 +0100 |
commit | 92e8596b78982885803994b50c6b35f73f7a403e (patch) | |
tree | 13428243987317da540495215ed4d9e3938fb5cb /README.md | |
parent | 985a9b0aa469cbe94fb95c433c97e2b321014341 (diff) | |
download | lustre-92e8596b78982885803994b50c6b35f73f7a403e.tar.gz lustre-92e8596b78982885803994b50c6b35f73f7a403e.zip |
:recycle: So long monorepo.
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..9f393f5 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# Lustre + +[](https://hex.pm/packages/lustre) + +An Elm-inspired framework for building web apps in Gleam! + +```gleam +import gleam/int +import lustre +import lustre/element.{text} +import lustre/element/html.{div, button, p} +import lustre/event.{on_click} + +pub fn main() { + let app = lustre.simple(init, update, view) + let assert Ok(_) = lustre.start("[data-lustre-app]", Nil) + + Nil +} + +fn init(_) { + 0 +} + +type Msg { + Incr + Decr +} + +fn update(model, msg) { + case msg { + Incr -> model + 1 + Decr -> model - 1 + } +} + +fn view(model) { + let count = int.to_string(model) + + div([], [ + button([on_click(Decr)], [text(" + ")]), + p([], [text(count)]), + button([on_click(Incr)], [text(" - ")]) + ]) +} +``` + +## Documentation + +You can find the official documentation over at [pkg.hayleigh.dev/lustre](https://pkg.hayleigh.dev/lustre). +Note that if you're viewing the documentation published on Hexdocs, you may find +that things are missing! Because of the way Gleam's documentation is generated, +packages and functions that target JavaScript don't get documented. + +## Installation + +Lustre is available on [Hex](https://hex.pm/packages/lustre). You can install +it like any other Hex package: + +```sh +$ gleam add lustre +``` |