JSFiddle - React, Tailwind, and code Playground

by rich_harris

HTML

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

CSS

#town-hall-content div.building {
    height: 200px;
    text-align: left;
    position: relative;
    clear: both;
    font-size: 12px;
    padding: 5px 0 0 0;
    margin: 0;
    color: #66400f;
}
#town-hall-content .hr {
    background: transparent url(http://static.tribul.net/game_images/layout/hr.png) no-repeat center center;
    height: 1px;
    padding: 0;
    position: absolute;
    left: 0;
    bottom: 0px;
    width: 100%;
}
#town-hall-content div.building .image-container {
    padding: 0;
    position: absolute;
    top: 20px;
    left: 0px;
    width: 150px;
}
#town-hall-content div.building .image-container>.cover {
    position: absolute;
    left: 0;
    top: 0;
    background: transparent url(http://static.tribul.net/game_images/layout/building-mask.png) no-repeat 0 0;
    width: 150px;
    height: 150px;
    z-index: 4;
    box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.6);
}
#town-hall-content div.building .image-container>.blocking-text {
    position: absolute;
    left: 0;
    top: 0;
    width: 150px;
    height: 150px;
    z-index: 3;
}
#town-hall-content div.building .image-container>.blocking-text>.message {
    padding: 0 10px;
    position: relative;
    display: table-cell;
    text-align: center;
    width: 150px;
    height: 150px;
    vertical-align: middle;
    z-index: 2;
    line-height: 16px;
    color: #37302a;
    font-size: 11px;
}
#town-hall-content div.building .image-container>.blocking-text>.undercover {
    position: absolute;
    background: rgba(255, 223, 171, 0.7);
    left: 0;
    top: 0;
    width: 150px;
    height: 150px;
    z-index: 1;
}
#town-hall-content div.building .image-container>.undercover {
    position: absolute;
    left: 0;
    top: 0;
    background: transparent url(http://static.tribul.net/game_images/layout/grass.jpg) repeat;
    width: 150px;
    height: 150px;
    z-index: 1;
}
#town-hall-content div.building .image-container>.thumbnail {
    position: absolute;
    left: 0;
    top: 0;
    padding:...

JavaScript

var templates = {
    building_1: "<div id=\"town-hall-content\">\n        {{#config.buildings:building}}\n                <div class=\"building\" id=\"building-item-{{building}}\">\n                        <div class=\"image-container\">\n                                <div class=\"thumbnail\" style=\"background: transparent url({{staticUrl}}\/game_images\/town\/buildings\/{{building}}\/{{building}}-1-thumbnail.png) no-repeat center center;\"><\/div>\n                                <div class=\"cover\"><\/div>\n                                <div class=\"undercover\"><\/div>\n \n                                <div class=\"level\">{{alreadyQueued(building,0)}}<\/div>\n                        <\/div>\n                        <div class=\"big_title\">{{lang('buildings',building)}} {{buildingMaxed(building) ? lang('general','maxed_out') : ''}} {{alreadyQueued(building,0) ? '' : lang('general','not_built')}}<\/div>\n                        <p class=\"{{buildingMaxed(building) ? 'maxed' : ''}}\">{{lang('buildings',building+'_description')}}<\/p>\n                        <div on-click=\"upgradeBuilding:{{building}}\" class=\"upgrade-button {{(buildingMaxed(building) || !enoughResources(building) || !slotsAvailable(player.premium) || neededBuildings(building,true)) ? 'disabled' : ''}}\"><\/div>\n                        <div on-click=\"downgradeBuilding:{{building}}\" class=\"downgrade-button disabled\"><\/div>\n                        {{^ buildingMaxed(building)}}\n                                <div class=\"resources\">\n                                        <div class=\"resource\">\n                                                <img class=\"thumbnail\" src=\"{{staticUrl}}\/game_images\/resources\/woodB.png\">\n                                                <label class=\"res-count-wood\">{{config.buildings[building][alreadyQueued(building,1)].wood}}<\/label>\n                                        <\/div>\n                                        <div...