JSFiddle - React, Tailwind, and code Playground

by rich_harris

HTML

<main></main>

<script id='template' type='text/ractive'>
    <h2>non-encapsulated</h2>
    <ul class='non-encapsulated'>
        {{#each items}}
            <li>{{this}}</li>
        {{/each}}
    </ul>

    <h2>encapsulated</h2>    
    <list items='{{items}}'/>
</script>

<script id='widget' type='text/ractive'>
    <ul>
        {{#each items}}
            <li>{{this}}</li>
        {{/each}}
    </ul>
</script>

CSS

body {
    font-family: 'Helvetica Neue', arial, sans-serif;
    font-weight: 200;
    color: #353535;
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 200;
}

.error {
    color: #d00;
    font-family: monospace;
}

ul {
    margin: 0;
    padding: 0;
}

li {
    padding: 0.5em;
    list-style: none;
}

.non-encapsulated li:nth-child(2n + 1) {
    background-color: #333; color: white
}

JavaScript

Ractive.components.list = Ractive.extend({
    template: '#widget',
    css: 'li:nth-child(2n + 1) { background-color: #333; color: white }'
});

var ractive = new Ractive({
    el: 'main',
    template: '#template',
    data: {
        items: 'a b c d e f g'.split( ' ' )
    }
});