JSFiddle - React, Tailwind, and code Playground

by rich_harris

HTML

<script src="http://cdn.ractivejs.org/edge/ractive.js"></script>
<main></main>

<script id='template' type='text/ractive'>
    <h1>groceries</h1>
    {{#each items}}
        <p><strong>{{name}}</strong>: {{formatPrice(price)}}</p>
    {{/each}}
</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;
}

JavaScript

var helpers = Ractive.defaults.data;

helpers.formatPrice = function ( price ) {
    var pence, pounds;
    
    if ( price < 1 ) {
        return Math.round( 100 * price ) + 'p';
    }
    
    pence = ( price % 1 );
    pounds = Math.round( price - pence );
    
    pence = Math.round( 100 * pence );
    
    if ( pence < 10 ) {
        pence = '0' + pence;
    }
    
    return '£' + pounds + '.' + pence;
};

var ractive = new Ractive({
    el: 'main',
    template: '#template',
    data: {
        items: [
            { name: 'apple', price: 0.29 },
            { name: 'beer', price: 2.50 },
            { name: 'cake', price: 5.49 }
        ]
    }
});