Skip to content

veeso/maud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

maud

Package Version Hex Docs test

An MDX-inspired Markdown renderer for Lustre and Gleam. Maud turns Markdown text into a Lustre component tree, giving you full control over how each Markdown construct is rendered.

Maud depends on lustre and mork. Add all three packages to your project:

gleam add maud@1
gleam add lustre@5
gleam add mork@1

Quick start

Render Markdown to Lustre elements with the default HTML components:

import maud
import maud/components
import mork

pub fn main() {
  let elements =
    maud.render_markdown(
      "# Hello, world!\n\nThis is **maud**.",
      mork.configure(),
      components.default(),
    )
  // `elements` is a `List(lustre/element.Element(a))` ready to use in your Lustre app
}

Custom components

Override individual components to apply your own styling via piping:

import lustre/attribute
import lustre/element/html
import maud
import maud/components
import mork

pub fn main() {
  let my_components =
    components.default()
    |> components.h1(fn(_id, children) {
      html.h1([attribute.class("text-4xl font-bold")], children)
    })
    |> components.p(fn(children) {
      html.p([attribute.class("leading-relaxed")], children)
    })

  let elements =
    maud.render_markdown(
      "# Styled heading\n\nStyled paragraph.",
      mork.configure(),
      my_components,
    )
}

Every Markdown construct has a matching setter on Components (a, blockquote, checkbox, code, del, em, footnote, h1h6, hr, img, li, mark, ol, p, pre, strong, table, tbody, td, th, thead, tr, ul), so you can customize exactly what you need while keeping the defaults for everything else.

Further documentation can be found at https://hexdocs.pm/maud.

Development

gleam build   # Build the project
gleam test    # Run the tests
gleam format  # Format source files

License

Maud is licensed under the MIT License

About

A MDX inspired Markdown renderer for Lustre and Gleam.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages