JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://unpkg.com/marked@0.3.6"></script>
<script src="https://unpkg.com/lodash@4.16.0"></script>
<script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
<task-list></task-list>
</div>

CSS

html, body, #editor {
  margin: 0;
  height: 100%;
  font-family: 'Helvetica Neue', Arial, sans-serif;
  color: #333;
}

textarea, #editor div {
  display: inline-block;
  width: 49%;
  height: 100%;
  vertical-align: top;
  box-sizing: border-box;
  padding: 0 20px;
}

textarea {
  border: none;
  border-right: 1px solid #ccc;
  resize: none;
  outline: none;
  background-color: #f6f6f6;
  font-size: 14px;
  font-family: 'Monaco', courier, monospace;
  padding: 20px;
}

code {
  color: #f66;
}

JavaScript

Vue.component('task-edit', { template: '<p><input v-model="task"></p>'});
Vue.component('task',{
template: '<div class="row"><div class="col-md-8 col-md-offset-2"><slot></slot><button v-on:click="$emit(\'edit\')">Edit</button></div></div>'});
Vue.component('task-list', { template: '<div class="container"><task v-for="(task, index) in tasks" :is="current" v-on:edit="edit">{{ task.name }}</task></div>',
		data(){
			return {
				tasks: [
					{ name: 'Foo' },
					{ name: 'Bar' }
				],
				current: 'task'
			}
		},
	}
);
const app = new Vue({
	el: '#app',
});