# Material Design Components in Elm

[![Build Status](https://travis-ci.org/debois/elm-mdl.svg?branch=master)](https://travis-ci.org/debois/elm-mdl)

Port of Google's
[Material Design Lite](https://www.getmdl.io/)
CSS/JS implementation of the
[Material Design Specification](https://www.google.com/design/spec/material-design/introduction.html).

Live demo 
[here](https://debois.github.io/elm-mdl/).

MDL is implemented primarily through CSS, with a little bit of Javascript
adding and removing CSS classes in response to DOM events. This port
re-implements the CSS parts in Elm, but relies on the CSS of MDL verbatim.

**CAUTION**! This is an early and incomplete prototype. Use at your own risk.


### Get Started

Build the demo:

    > elm-make examples/Demo.elm

This will construct a file `index.html`; open that in your browser.

### Embedding in your own HTML. 

Initial page load of the demo will produce a flicker, which can only be 
avoided if you set up the MDL css to load before elm does. Use the file
`page.html` as a template. To build the demo in this mode, comment out 
[line 154 in `examples/Demo.elm`](https://github.com/debois/elm-mdl/blob/master/examples/Demo.elm#L154)
and build the demo like this: 

    > elm-make examples/Demo.elm --output elm.js

This will produce a file `elm.js`. Open the file 
[`page.html`](https://raw.githubusercontent.com/debois/elm-mdl/master/page.html) in your 
browser; this file will set up MDL css and load `elm.js`.

### Contribute

Contributions are warmly encouraged! Whether you are a newcomer to Elm or 
an accomplished expert, the MDL port presents interesting challenges. Refer
to [this page](https://github.com/debois/elm-mdl/blob/master/CONTRIBUTING.md)
for a detailed list of possible contributions.