JSFiddle - React, Tailwind, and code Playground
by Dogbert
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Code+Pro">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<div id="app">
<div id="header">
<!-- <div id="brand">Rust Playground</div> -->
<div id="run">
<button class="button large primary has-fa">
<i class="fa fa-play fa-small" aria-hidden="true"></i>Run
</button>
</div>
<div id="compile-to" class="button-group">
<button class="button primary outline">ASM</button>
<button class="button primary outline">LLVM IR</button>
<button class="button primary outline">MIR</button>
</div>
<div class="button-group">
<button class="button primary outline has-fa">
<i class="fa fa-retweet" aria-hidden="true"></i>Format
</button>
<button class="button primary outline has-fa">
<i class="fa fa-share-alt" aria-hidden="true"></i>Share
</button>
</div>
<div class="float-right">
<button class="button primary outline has-fa">
<i class="fa fa-cog" aria-hidden="true"></i>Settings
</button>
</div>
</div>
<div id="main">
<div id="sidebar">
<div id="files">
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
<div class="file">Hello</div>
</div>
</div>
<div id="editor"></div>
</div>
<div id="footer">
<div class="float-left">
<span class="cursor">
</span>
</div>
<div class="float-right">
<span...
SCSS
$primary: #EA285F;
/* $primary: #313131; */
/* $primary: #414141; */
/* $primary: #515151; */
/* $primary: #2780E3; */
/* $primary: #4c7ff0; */
/* $primary: #c04f33; */
/* $primary: #AA4422; */
/* $primary: lighten(#AA4422, 10%); */
$primary: #4C5A67;
$primary: #5286FB;
$primary: #1F5D90;
$border-radius: 2px;
body,
button,
input,
textarea,
select {
font-family: "Source Sans Pro";
}
* {
box-sizing: border-box;
}
body {
background: $primary;
margin: 0;
}
#app {
padding: 8px;
display: flex;
flex-direction: column;
}
html,
body,
#app {
height: 100%;
}
#header {
padding: 10px;
background: white;
/* border-bottom: 1px solid #d9d9d9; */
flex: 0 auto;
border-radius: $border-radius $border-radius 0 0;
/* display: flex; */
.button {
margin-top: 5px;
}
.button.large {
margin-top: 0;
}
}
#header > * {
float: left;
margin-right: 10px;
}
#header > *:last-child {
float: left;
margin-right: 0;
}
#brand {
padding: 6px 10px;
}
#run {}
#compile-to {}
#main {
flex: 1;
background: white;
display: flex;
}
#sidebar {
flex: 0 auto;
width: 200px;
/* border-right: 1px solid $primary; */
display: none;
transition: flex 1s;
}
#editor {
flex: 3;
font-family: Source Code Pro;
font-size: 14px;
}
#footer {
padding: 10px 15px;
background: #f8f8f8;
/* border-top: 1px solid #d9d9d9; */
flex: 0 auto;
border-radius: 0 0 $border-radius $border-radius;
font-size: 13px;
}
.button {
background: none;
border: none;
padding: .4em 1em;
margin: 0;
cursor: pointer;
font-size: 14px;
transition: 0.1s all;
border-width: 1px;
border-style: solid;
}
.button.large {
font-size: 20px;
}
.button.primary {
color: white;
background: $primary;
border-color: $primary;
}
.button.primary:hover {
background: darken($primary, 10%);
border-color: darken($primary, 10%);
}
.button.primary.outline {
border-color: $primary;
background: none;
color: $primary;
}
.button.outline...
JavaScript
var editor = ace.edit("editor");
var footerCursor = document.querySelector("#footer .cursor");
editor.selection.on("changeCursor", function() {
var cursor = editor.selection.getCursor();
footerCursor.innerHTML = '' + (cursor.row + 1) + ':' + (cursor.column + 1);
});
editor.setValue("fn main() {\n println!(\"Hello, world!\");\n}");
// editor.clearSelection();
editor.gotoLine(1);
editor.setTheme("ace/theme/chrome");
editor.session.setMode("ace/mode/rust");
editor.setKeyboardHandler("ace/keyboard/vim");
// editor.renderer.$cursorLayer.setBlinking(false);