# Lustre Pipes
[![Package Version](https://img.shields.io/hexpm/v/lustre_pipes)](https://hex.pm/packages/lustre_pipes)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/lustre_pipes/)
```sh
gleam add lustre_pipes
```
Let's you write views with pipes. It's definitely less performant but I have
not benchmarked if significant or not.
Example usage:
```gleam
import lustre_pipes/attribute
import lustre_pipes/element
import lustre_pipes/element/html
import lustre_pipes/event
fn view(model: Model) -> element.Element(Msg) {
let sorted_messages =
model.omnistate.messages
|> dict.values
|> sort_messages
html.div()
|> attribute.class("h-full flex flex-col justify-center items-center gap-y-5")
|> element.children([
html.div()
|> element.keyed({
use message <- list.map(sorted_messages)
#(message.id, message_element(message))
}),
html.form()
|> event.on_submit(UserSendDraft)
|> element.children([
html.input()
|> event.on_input(UserUpdateDraftMessageContent)
|> attribute.type_("text")
|> attribute.value(model.draft_message_content)
|> attribute.class("border border-black py-1 px-2")
|> element.empty(),
html.input()
|> attribute.type_("submit")
|> attribute.value("Send")
|> attribute.class("ml-4 border border-black py-1 px-2")
|> element.empty(),
]),
])
}
```
Further documentation can be found at <https://hexdocs.pm/lustre_pipes>.
## Development
```sh
gleam run # Run the project
gleam test # Run the tests
```