updating styles

This commit is contained in:
Brad Rydzewski 2015-07-29 09:16:08 -07:00
parent 4ab17dd9d9
commit f1a9058191
25 changed files with 1188 additions and 2020 deletions

1
.gitignore vendored
View file

@ -10,6 +10,7 @@ drone
*~
~*
*.sqlite
*.sqlite3
*.deb
*.deb.*
*.rpm

Binary file not shown.

View file

@ -1,17 +1,16 @@
<!DOCTYPE html>
<html ng-app="drone" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<base href="/"/>
<link href='//fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Open+Sans:400,600,300' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet' type='text/css'>
<link href='//cdnjs.cloudflare.com/ajax/libs/octicons/2.1.2/octicons.min.css' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Droid+Sans+Mono"/>
<link href='/static/styles/drone.css' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/static/styles/reset.css" />
<link rel="stylesheet" href="/static/styles/fonts.css" />
<link rel="stylesheet" href="/static/styles/alert.css" />
<link rel="stylesheet" href="/static/styles/blankslate.css" />
<link rel="stylesheet" href="/static/styles/list.css" />
<link rel="stylesheet" href="/static/styles/range.css" />
<link rel="stylesheet" href="/static/styles/switch.css" />
<link rel="stylesheet" href="/static/styles/main.css" />
<link rel="icon" href="/static/favicon.png">
</head>
<body>

View file

@ -1,18 +1,33 @@
<article>
<section>
<a class="row build-row" ng-repeat="build in builds | orderBy:'-number'" ng-href="/{{ repo.full_name }}/{{ build.number }}">
<div>
<div ng-class="[ 'build-num', build.status ]"></div>
</div>
<div>
<h3>{{ build.head_commit.message }}</h3>
<main>
<article>
<p>
<strong>{{ build.head_commit.author.login }}</strong> pushed to <strong>{{ build.head_commit.branch}}</strong> {{ build.started_at | fromNow }}
</p>
<section class="search">
<input type="search" spellcheck="false" placeholder="Filter commits for {{ repo.full_name}}" />
<menu>
<button type="button" ng-click="unwatch(repo)" ng-if="repo.starred && user">
<i class="material-icons">visibility</i>
</button>
<button type="button" ng-click="watch(repo)" ng-if="!repo.starred && user">
<i class="material-icons">visibility_off</i>
</button>
<a href="/{{ repo.full_name }}/edit">
<i class="material-icons">tune</i>
</a>
</menu>
</section>
<div style="position:absolute;top:30px;right:30px;color:#CCC;"># {{build.number}}</div>
<div>
<div class="list">
<a ng-repeat="build in builds | orderBy:'-number'" ng-href="/{{ repo.full_name }}/{{ build.number}}">
<div class="column-status">
<div class="status {{ build.status }}"></div>
</div>
<div class="column-fill">
<h2>{{ build.head_commit.message }}</h2>
<p><em>{{ build.head_commit.author.login }}</em> pushed to <em>{{ build.head_commit.branch }}</em> {{ build.started_at | fromNow }}</p>
</div>
</a>
</div>
</a>
</section>
</article>
</div>
</article>
</main>

View file

@ -1,18 +1,8 @@
<div class="breadcrumb" style="position:relative;top:0px;">
<a href="/" class="icon icon-home">
<i class="material-icons md-18">home</i>
</a>
<a href="#">{{ repo.owner }} / {{ repo.name }}</a>
</div>
<div class="menu">
<a ng-href="/{{ repo.full_name }}/edit" class="nav-item settings float-right" ng-if="repo.permissions.pull">
<i class="material-icons md-18">edit</i>
</a>
<button ng-click="watch(repo)" ng-if="!repo.starred && user" class="nav-item star float-right">
<i class="material-icons md-18">star_border</i>
</button>
<button ng-click="unwatch(repo)" ng-if="repo.starred && user" class="nav-item unstar float-right">
<i class="material-icons md-18">star</i>
</button>
</div>
<ol>
<li>
<a href="/">
<i class="material-icons">arrow_back</i>
</a>
</li>
<li>{{repo.owner}} / {{repo.name}}</li>
</ol>

View file

@ -17,4 +17,15 @@
<button ng-click="unwatch(repo)" ng-if="repo.starred && user" class="nav-item unstar float-right">
<i class="material-icons md-18">star</i>
</button>
</div>
</div>
<ol>
<li>
<a ng-href="/{{ repo.full_name }}">
<i class="material-icons">arrow_back</i>
</a>
</li>
<li>{{repo.owner}} / {{repo.name}}</li>
<li><i class="material-icons">chevron_right</i></li>
<li>{{build.number}}</li>
</ol>

View file

@ -1,15 +1,71 @@
<header>
<a class="logo float-left" href="/"></a>
<a class="menu-item help float-right" href="http://readme.drone.io" target="_blank">
<i class="material-icons md-18">help</i>
</a>
<a class="menu-item users float-right" href="/users" ng-if="user.admin">
<i class="material-icons md-18">supervisor_account</i>
</a>
<a class="menu-item settings float-right" href="/profile">
<i class="material-icons md-18">settings</i>
</a>
<a class="menu-item user-name float-right" href="/profile">{{ "+"+user.login }}</a>
<div class="toolbar" ui-view="toolbar"></div>
<ul>
<li>
<img src="https://avatars1.githubusercontent.com/u/817538" />
</li>
<li ng-init="show=false">
<a href="#" ng-click="show=true">
<span>{{user.login}}</span>
<i class="material-icons">more_vert</i>
</a>
<div class="backdrop" ng-show="show" ng-click="show=false"></div>
<div class="dropdown" ng-show="show" ng-click="show=false">
<ul>
<li><a href="/profile">Profile</a></li>
<li><a href="/users">Users</a></li>
<li><a href="/profile">Workers</a></li>
<li><a href="/help">Help</a></li>
</ul>
</div>
</li>
</ul>
</header>
<div class="toolbar" ui-view="toolbar"></div>
<div ui-view="content"></div>
<div ui-view="content"></div>
<style>
header ul li a i {
cursor:pointer;
}
header li {
position:relative;
}
.backdrop {
position:fixed;
top:0px;
left:0px;
right:0px;
bottom:0px;
z-index:99;
cursor:default;
}
.dropdown {
box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
position: absolute;
top: 60px;
right: 15px;
width: 200px;
height: 200px;
background: #FFF;
z-index:999;
padding: 10px 0px;
}
.dropdown ul {
float:inherit;
margin:0px;
}
.dropdown li {
display:block;
}
.dropdown li > a {
padding: 15px 20px;
display: block;
line-height: inherit;
text-transform: none;
}
.dropdown li > a:hover {
background:#F5F7F9;
}
</style>

View file

@ -1,3 +1,4 @@
<main>
<article>
<section>
<h2>Login info</h2>
@ -51,4 +52,5 @@
</tbody>
</table>
</section>
</article>
</article>
</main>

View file

@ -1,6 +1,8 @@
<div class="breadcrumb" style="position:relative;top:0px;">
<a href="/" class="icon icon-home">
<i class="material-icons md-18">home</i>
</a>
<a href="#">Profile</a>
</div>
<ol>
<li>
<a href="/">
<i class="material-icons">arrow_back</i>
</a>
</li>
<li>Profile</li>
</ol>

View file

@ -1,3 +1,4 @@
<main>
<article>
<section>
<h2>Settings</h2>
@ -72,4 +73,5 @@
<pre class="snippet snippet-padding">{{ repo.keypair.public }}</pre>
</div>
</section>
</article>
</article>
</main>

View file

@ -1,14 +1,20 @@
<article>
<section>
<a class="row build-row" ng-repeat="repo in repos | orderBy:'full_name'" ng-href="/{{ repo.full_name }}">
<div>
<div class="icon icon-repo"></div>
</div>
<div>
<h3>{{ repo.owner }} / {{ repo.name }}</h3>
<p>{{ repo.clone_url }}</p>
</div>
</a>
<main>
<article>
<section class="search">
<input type="search" spellcheck="false" placeholder="Create or find a repository" ng-model="login" />
</section>
</article>
<ul class="list cozy">
<a class="row row-repo" ng-repeat="repo in repos" ng-href="/{{ repo.full_name }}">
<div class="column-avatar">
<img ng-src="{{ repo.gravatar_id | gravatar }}" />
</div>
<div class="column-fill">
<h2>{{ repo.name }}</h2>
</div>
</a>
</ul>
</article>
</main>

View file

@ -1,9 +1 @@
<div class="breadcrumb" style="position:relative;top:0px;">
<a href="#">Dashboard</a>
</div>
<div class="menu">
<a ng-href="/new" class="nav-item add float-right">
<i class="material-icons">add</i>
</a>
</div>
<a href="/" class="logo"></a>

View file

@ -1,18 +1,8 @@
<div class="breadcrumb">
<a href="/{{ repo.full_name }}/edit" class="icon icon-home">
<i class="material-icons md-18">home</i>
</a>
<a ng-href="/{{ repo.full_name }}">{{ repo.owner }} / {{ repo.name }}</a>
</div>
<div class="menu">
<a ng-href="/{{ repo.full_name }}/edit" class="nav-item settings float-right" ng-if="repo.permissions.pull">
<i class="material-icons md-18">edit</i>
</a>
<button ng-click="watch(repo)" ng-if="!repo.starred && user" class="nav-item star float-right">
<i class="material-icons md-18">star_border</i>
</button>
<button ng-click="unwatch(repo)" ng-if="repo.starred && user" class="nav-item unstar float-right">
<i class="material-icons md-18">star</i>
</button>
</div>
<ol>
<li>
<a ng-href="/{{ repo.full_name}}">
<i class="material-icons">arrow_back</i>
</a>
</li>
<li>{{repo.owner}} / {{repo.name}}</li>
</ol>

View file

@ -1,36 +1,20 @@
<article>
<main>
<article>
<section>
<form style="padding:30px">
<input type="text" ng-model="login" placeholder="i.e. octocat"
style="font-size:14px;padding:10px 20px;width:400px;border: 1px solid #d9d9d9;outline:none;"/>
<button ng-click="add(login)"
style="display: inline-block;background:#EEE;font-size:14px; padding:0px 20px;text-transform:uppercase;cursor:pointer;color:#616161;height:39px;line-height:41px;margin-left:10px;">
Add User
</button>
<section class="search">
<input type="search" spellcheck="false" placeholder="Create or find a user" ng-model="login" />
</section>
</form>
</section>
<ul class="list cozy">
<li class="row row-user" ng-repeat="user in users">
<div class="column-avatar">
<img ng-src="{{ user.gravatar_id | gravatar }}" />
</div>
<div class="column-fill">
<h2>{{ user.login }}</h2>
</div>
</li>
</ul>
<section>
<div class="row row-user" ng-repeat="user in users">
<div>
<img ng-src="{{ user.gravatar_id | gravatar }}"/>
</div>
<div>
<h3>{{ user.login }}
<small ng-if="user.admin">Admin</small>
</h3>
<p>{{ user.email }}</p>
<button ng-click="toggle(user)" ng-class="{'btn-admin':true, 'btn-checked': user.admin}">
<i class="material-icons md-18">account_circle</i>
</button>
<button ng-click="remove(user)" class="btn-remove">
<i class="material-icons md-18">delete</i>
</button>
</div>
</div>
</section>
</article>
</article>
</main>

View file

@ -1,6 +1,8 @@
<div class="breadcrumb" style="position:relative;top:0px;">
<a href="/" class="icon icon-home">
<i class="material-icons md-18">home</i>
</a>
<a href="#">Users</a>
</div>
<ol>
<li>
<a href="/">
<i class="material-icons">arrow_back</i>
</a>
</li>
<li>Users</li>
</ol>

View file

@ -0,0 +1,48 @@
.alert {
padding: 40px;
background-color: #F5F7F9;
color: #4f5b66;
text-align: center;
font-size: 16px;
border-radius:3px;
margin-bottom:30px;
position:relative;
}
.alert em {
font-weight: bold;
color: #2b303b;
}
.alert i.material-icons {
font-size: 42px;
display: block;
text-align: center;
width: 100%;
margin-bottom: 20px;
}
.alert-error {
background: #bf616a;
color: #fff;
}
.alert-create-not-found {
color: rgba(255,255,255,0.95);
background:#ebcb8b;
outline:none;
border:none;
width:100%;
cursor: pointer;
font-family: Roboto;
}
.alert-error em,
.alert-create-not-found em {
font-weight: bold;
color: #fff;
font-size: 120%;
margin-left:10px;
}
/* I'm not sure at the moment if we want
* to display these icons or not
*/
.alert-create-not-found i.material-icons {
display:none;
}

View file

@ -0,0 +1,13 @@
.blankslate {
padding: 40px 20px;
background-color: #eff1f5;
color: #303030;
text-align: center;
font-size: 16px;
}
.blankslate.clean-background {
}
.blankslate.spacious {
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,3 @@
@import url(//fonts.googleapis.com/css?family=Roboto:400,300,500,700);
@import url(//fonts.googleapis.com/css?family=Roboto+Mono:400,300,500);
@import url(//fonts.googleapis.com/icon?family=Material+Icons);

View file

@ -0,0 +1,71 @@
.list > a,
.list > li {
display: flex;
padding: 30px 0px;
border-top: 1px solid #f0f4f7;
color:#4c555a;
text-decoration: none;
position: relative;
}
.list > a:first-child,
.list > li:first-child {
border-top: none;
}
.list .column-avatar {
width: 60px;
min-width: 60px;
}
.list .column-status {
width: 45px;
min-width: 45px;
}
.list .column-fill {
flex: 1 1 auto;
}
.comfortable > a,
.comfortable > div,
.comfortable > li {
padding-top:30px;
padding-bottom:30px;
}
.cozy > a,
.cozy > div,
.cozy > li {
padding-top:15px;
padding-bottom:15px;
}
.compact > a,
.compact > div,
.compact > li {
padding-top:10px;
padding-bottom:10px;
}
.list .column-avatar img {
width:32px;
height:32px;
border-radius:50%;
margin-left:5px;
}
.list h2 {
line-height:32px;
font-size:18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom:1px;
}
.list p {
color:#a7adba;
margin-top:3px;
font-size:14px;
line-height:20px;
}
.list em,
.list em {
color:#65737e;
}

View file

@ -0,0 +1,645 @@
html, body {
background:#fff;
color:#4c555a;
font-size:14px;
font-family:"Roboto";
min-height:100vh;
}
body > div {
display: flex;
flex-direction: column;
min-height: 100vh;
}
/*
* Header and Logo
*/
.logo {
float: left;
height: 36px;
width: 36px;
opacity: 1;
margin: 14px 0px 0px 14px;
margin: 14px 0px 0px 18px;
background: url(data:image/svg+xml;charset=utf-8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4NCg0KPHN2Zw0KICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIg0KICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyINCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyINCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiDQogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSINCiAgIHdpZHRoPSIzMiINCiAgIGhlaWdodD0iMzIiDQogICBpZD0ic3ZnMiINCiAgIHZlcnNpb249IjEuMSINCiAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguMy4xIHI5ODg2Ig0KICAgc29kaXBvZGk6ZG9jbmFtZT0iZHJvbmVfMzIucG5nIj4NCiAgPGRlZnMNCiAgICAgaWQ9ImRlZnM0IiAvPg0KICA8c29kaXBvZGk6bmFtZWR2aWV3DQogICAgIGlkPSJiYXNlIg0KICAgICBwYWdlY29sb3I9IiNmZmZmZmYiDQogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2Ig0KICAgICBib3JkZXJvcGFjaXR5PSIxLjAiDQogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiDQogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiDQogICAgIGlua3NjYXBlOnpvb209IjcuOTE5NTk1OSINCiAgICAgaW5rc2NhcGU6Y3g9IjkuNjYyNzY2NCINCiAgICAgaW5rc2NhcGU6Y3k9IjYuMzk3Njg2NCINCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4Ig0KICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiDQogICAgIHNob3dncmlkPSJ0cnVlIg0KICAgICBpbmtzY2FwZTpzbmFwLWdsb2JhbD0iZmFsc2UiDQogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTI5NSINCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNzQ0Ig0KICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNjUiDQogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNCINCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSINCiAgICAgZml0LW1hcmdpbi10b3A9IjAiDQogICAgIGZpdC1tYXJnaW4tbGVmdD0iMCINCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCINCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAiPg0KICAgIDxpbmtzY2FwZTpncmlkDQogICAgICAgdHlwZT0ieHlncmlkIg0KICAgICAgIGlkPSJncmlkMjk5NiINCiAgICAgICBlbXBzcGFjaW5nPSI1Ig0KICAgICAgIHZpc2libGU9InRydWUiDQogICAgICAgZW5hYmxlZD0idHJ1ZSINCiAgICAgICBzbmFwdmlzaWJsZWdyaWRsaW5lc29ubHk9InRydWUiDQogICAgICAgb3JpZ2lueD0iLTIxLjcyMDc3OXB4Ig0KICAgICAgIG9yaWdpbnk9Ii05OTAuMzcxODhweCIgLz4NCiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+DQogIDxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGE3Ij4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrDQogICAgICAgICByZGY6YWJvdXQ9IiI+DQogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0KICAgICAgICA8ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPg0KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4NCiAgICAgIDwvY2M6V29yaz4NCiAgICA8L3JkZjpSREY+DQogIDwvbWV0YWRhdGE+DQogIDxnDQogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIg0KICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIg0KICAgICBpZD0ibGF5ZXIxIg0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEuNzIwNzc5LC0yOS45OTAyODcpIj4NCiAgICA8cGF0aA0KICAgICAgIHNvZGlwb2RpOnR5cGU9ImFyYyINCiAgICAgICBzdHlsZT0iZmlsbDojMjQyNzI5O2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLW9wYWNpdHk6MTtzdHJva2UtZGFzaGFycmF5Om5vbmUiDQogICAgICAgaWQ9InBhdGgyOTk4Ig0KICAgICAgIHNvZGlwb2RpOmN4PSIxNzIuMTA0NzQiDQogICAgICAgc29kaXBvZGk6Y3k9IjQ1OC4zOTI0OSINCiAgICAgICBzb2RpcG9kaTpyeD0iNS40Mjk1Njk3Ig0KICAgICAgIHNvZGlwb2RpOnJ5PSI1LjA1MDc2MjciDQogICAgICAgZD0ibSAxNzcuNTM0MzEsNDU4LjM5MjQ5IGEgNS40Mjk1Njk3LDUuMDUwNzYyNyAwIDEgMSAtMTAuODU5MTQsMCA1LjQyOTU2OTcsNS4wNTA3NjI3IDAgMSAxIDEwLjg1OTE0LDAgeiINCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1NDE4MzA2LDAsMCwwLjgxMDc0NjgxLC05Mi4wNzA0MDEsLTMyMy4wMDQpIiAvPg0KICAgIDxwYXRoDQogICAgICAgc3R5bGU9ImZpbGw6IzI0MjcyOTtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MDtzdHJva2UtbWl0ZXJsaW1pdDo0Ig0KICAgICAgIGQ9Im0gMzcuNzI4MDc1LDMyLjkyNjc2MiBjIDcuMTQ4NjU3LDAuMDU1OTkgMTUuMjc2MDY3LDUuMDk1MzgzIDE2LjAwNzI5NSwxNC41OTI2OTggbCAtOS42Nzg4MywwIGMgMCwwIC0xLjI0Njg3MSwtNS4yNDY5MTYgLTYuMzI4NDY1LC01LjIxMTY3OCAtNS4wODE1OTUsMC4wMzUyMiAtNi4zMjg0NjYsNS4yMTE2NzggLTYuMzI4NDY2LDUuMjExNjc4IGwgLTkuNjc4ODMsMCBjIDAuNDcwMjUsLTkuMzI5NDQ3IDguNDYyMDk3LC0xNC42NTE3NzYgMTYuMDA3Mjk2LC0xNC41OTI2OTggeiINCiAgICAgICBpZD0icmVjdDM4MTAiDQogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCINCiAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9InNjY3pjY3MiIC8+DQogICAgPHBhdGgNCiAgICAgICBzdHlsZT0iZmlsbDojMjQyNzI5O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowO3N0cm9rZS1taXRlcmxpbWl0OjQiDQogICAgICAgZD0iTSAzNy43OTQ1NTMsNTkuOTkwMjYgQyAzMi40NjQyMDIsNjAuMDA0NDQgMjcuNDg0NjczLDU1Ljk4MjIyMSAyNS40NDM0MDYsNDkuNzUzMDM2IGwgNS45NTYyMDMsMCBjIDAsMCAxLjI4NDg2NSw1LjE4NzcxOSA2LjM2NjQ1OSw1LjE1MjQ4IDUuMDgxNTk0LC0wLjAzNTIyIDYuMjkwNDcyLC01LjE1MjQ4IDYuMjkwNDcyLC01LjE1MjQ4IGwgNS45NTYyMDMsMCBjIC0xLjMyNzc1LDYuNTg5Nzc0IC02Ljg4NzgzOCwxMC4yMjMwMzggLTEyLjIxODE5LDEwLjIzNzIyNCB6Ig0KICAgICAgIGlkPSJyZWN0MzgxMC0xIg0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJzY2N6Y2NzIiAvPg0KICA8L2c+DQo8L3N2Zz4=) no-repeat center center;
}
header {
height:60px;
min-height:60px;
max-height:60px;
/*border-bottom:1px solid #f2f2f2;*/
box-sizing: border-box;
}
header ul {
float:right;
margin-right:20px;
}
header ul li span {
margin-right:7px;
margin-right:3px;
}
header li {
display:inline-block;
}
header li a {
line-height:60px;
display:inline-block;
vertical-align: middle;
padding:0px 10px;
text-transform: lowercase;
color:#4c555a;
text-decoration: none;
font-size:15px;
}
header li i {
vertical-align: middle;
}
header li.active a {
color:#0099e5;
}
header li img {
border-radius:50%;
width:32px;
height:32px;
vertical-align: middle;
margin-right:3px;
}
header ol {
float:left;
margin-left:15px;
}
header ol li {
line-height:60px;
display:inline-block;
vertical-align: middle;
font-size:21px;
}
header ol li:first-child {
font-size:0px;
}
header ol li i {
vertical-align: middle;
font-size:28px;
}
header ol li a {
line-height:inherit;
vertical-align: middle;
font-size:0px;
}
header ol li a i.material-icons {
vertical-align: middle;
font-size:25px;
}
header .private {
color: #ebcb8b;
opacity: 0.8;
/*color: #000;
opacity:0.25;*/
padding-left:15px;
margin-top:-5px;
display:none;
}
header .private i {
font-size:27px;
}
input[type="search"] {
font-family:Roboto;
}
/*
* Main Seciton / Layout
*/
.flex {
display:flex;
flex:1 1 auto;
margin-top:0px;
}
main article {
margin:0px auto;
max-width:900px;
padding:30px 40px;
}
.flex article {
padding-bottom:0px;
}
.flex article pre {
min-height: calc(100vh - 120px);
margin-bottom:20px;
}
main aside {
min-width:500px;
width:500px;
box-sizing: border-box;
padding:40px 50px;
}
main aside > div {
position: sticky;
top:0px;
}
/*
* Build Console
*/
.console {
margin:0px;
flex: 1 1 auto;
/*margin-top: -1px;*/
max-width:auto;
padding:30px 40px 20px 0px;
}
.console pre {
color:#eff1f5;
border-radius:2px;
background:#2b303b;
white-space: pre-wrap;
word-wrap: break-word;
box-sizing: border-box;
padding:35px 40px;
line-height:18px;
font-family: "RobotoMono";
font-size:12px;
font-weight:300;
}
/*
* Repo List
*/
/*
* Build List
*/
.repo-list { }
.repo-list li {
display:flex;
padding:30px 0px;
border-top:1px solid #f0f4f7;
position:relative;
}
.repo-list img {
width:32px;
height:32px;
border-radius:50%;
margin-left:5px;
}
.repo-list li:first-child {
border-top:none;
}
.repo-list li > div:first-child {
width:60px;
min-width:60px;
}
.repo-list li > div:nth-child(2) {
flex:1 1 auto;
}
.repo-list h2 {
line-height:32px;
font-size:18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom:1px;
}
.repo-list p {
color:#a7adba;
margin-top:3px;
font-size:14px;
line-height:20px;
display:none;
}
/*
* Build List
*/
.build-list { }
.build-list li {
display:flex;
/*padding:30px 0px 30px 35px;*/
padding:30px 0px;
border-top:1px solid #f0f4f7;
position:relative;
}
/*.build-list li:nth-child(even) {
background:#FAFBFC;
}*/
.build-list li:first-child {
border-top:none;
}
.build-list li > div:first-child {
width:60px;
min-width:60px;
}
.build-list li > div:nth-child(2) {
flex:1 1 auto;
}
.build-list h2 {
line-height:32px;
font-size:18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom:1px;
}
.build-section p,
.build-list p {
color:#a7adba;
margin-top:3px;
font-size:14px;
line-height:20px;
}
.build-section em,
.build-list em {
color:#65737e;
}
.build-list h2 small:before {
content:"#";
margin-right:3px;
}
.build-list h2 small:after {
content:" ";
margin-right:10px;
}
/*
* Build Details
*/
.build-section {
margin-bottom:40px;
display:flex;
}
.build-section > div:first-child {
min-width:60px;
width:60px;
display:none;
}
.build-section > div:last-child {
flex: 1 1 auto;
padding-top:4px;
font-size:17px;
line-height:22px;
}
.build-detail {
padding-left:50px;
box-sizing: border-box;
}
.build-summary h2 {
line-height:25px;
}
.build-summary p {
margin-top:15px;
}
/*
* Job List
*/
.job-list { }
.job-list li {
display:flex;
padding:20px 0px;
border-top:1px solid #f0f4f7;
}
.job-list li > div:first-child {
width:50px;
min-width:50px;
}
.job-list li > div:nth-child(2) { /** TEMPORARILY HIDDEN. MAY DECIDE TO REMOVE */
min-width:25px;
font-size:13px;
text-align:right;
padding: 10px 20px 0px 10px;
font-weight:bold;
font-size:15px;
display:none;
}
.job-list li > div:nth-child(3) {
flex:1 1 auto;
font-size:13px;
}
.job-list li div.param {
margin-top:5px;
}
.job-list li div.param:first-child {
margin-top:10px;
}
li menu {
position:absolute;
top:15px;
right:0px;
}
li menu .button {
border-radius:50%;
width:36px;
height:36px;
line-height:36px;
padding:0px;
color:#dfe1e8;
background: #fff;
}
li menu .button:hover {
border:1px solid #a7adba;
background:#FFF;
color:#a7adba;
}
li menu .button i {
font-size:22px;
}
li menu .button.success {
color: #FFF;
border:1px solid #a3be8c;
background: #a3be8c;
color: #a3be8c;
background:#FFF;
}
li menu .button.danger:hover {
color: #FFF;
background: #bf616a;
color:#bf616a;
background:#FFF;
border:1px solid #bf616a;
}
/*
* Tail button to follow a build
*/
.button-tail {
position: fixed;
bottom: 50px;
right: 80px;
width: 38px;
height: 38px;
background: rgba(255,255,255,0.2);
border-radius: 50%;
box-shadow: 1px 2px 2px rgba(0,0,0,0.2);
cursor: pointer;
bottom: 15px;
right: 60px;
}
.button-tail i {
text-align:center;
color:rgba(255,255,255,0.5);
width:38px;
line-height:38px;
display:inline-block;
}
/*
* Random buttons used throughtout
*/
/*
menu {
display:block;
text-align:right;
margin-bottom:20px;
}
menu .button {
margin-left:5px;
border:1px solid #f0f0f0;
}
menu .button span {
margin:0px 10px;
text-transform: uppercase;
}*/
.button {
border-radius:2px;
line-height:32px;
display:inline-block;
vertical-align: middle;
padding:4px 15px 4px 15px;
text-decoration: none;
font-size:13px;
background:#eff1f5;
color: rgba(0,0,0,0.5);
}
.button:hover {
background:#dfe1e8;
}
/*
.button-watch {
background: #a7adba;
}
.button-settings {
background:#d08770;
}
*/
.button i {
vertical-align: middle;
/*margin-right:5px;*/
line-height:17px;
font-size:18px;
}
/*
* Status Indicator
*/
.status {
width: 36px;
height: 36px;
border-radius: 50%;
display: inline-block;
}
.status i {
line-height: 36px;
width: 36px;
vertical-align: middle;
text-align: center;
font-size:32px;
}
.status-small {
}
.status.error,
.status.killed,
.status.failure {
color: #bf616a;
}
.status.success {
color:#a3be8c;
}
/* Search Form */
.search {
display:block;
width:100%;
margin:0px 0px 37px 0px;
}
input[type="search"] {
background: #eff1f5;
line-height: 50px;
border:none;
border-radius:3px;
display:block;
width:100%;
font-size:14px;
padding:0px 15px;
font-family:"Roboto";
}
/* SETTINGS SECTION */
section .row {
display: flex;
position: relative;
}
section .row > div:first-child {
padding: 30px 0px;
border-bottom: 1px solid #f0f4f7;
width: 200px;
min-width: 200px;
font-size:15px;
color: #343d46;
}
section .row > div:last-child {
flex: 1 1 auto;
padding: 30px;
border-bottom: 1px solid #f0f4f7;
overflow:hidden;
color: #65737e;
}
section .row:last-child > div {
border-bottom: none;
}
pre.snippet-padding {
padding: 30px 0px;
}
pre.snippet {
white-space: pre-wrap;
word-wrap: break-word;
font-size: 13px;
line-height: 18px;
font-family: "RobotoMono";
}
.slider-label {
display: inline-block;
margin-left: 10px;
}
::-webkit-input-placeholder { /* WebKit browsers */
color: #a7adba;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #a7adba;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #a7adba;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #a7adba;
}
/* ROUND INDICATORS */
.status {
width:12px;
height:12px;
border-radius:50px;
margin-top:10px;
}
.status i {
font-size:0px;
}
.status.error,
.status.killed,
.status.failure {
background: #bf616a;
}
.status.success {
background:#a3be8c;
}
.build-list li > div:first-child,
.job-list li > div:first-child {
width: 45px;
min-width: 45px;
}
/*
* Search Menu
*/
section.search {
background: #eff1f5;
margin: 0px 0px 37px 0px;
border-radius: 3px;
display:flex;
flex-shrink: 0;
}
section.search input[type="search"] {
line-height: 50px;
border: none;
border-radius: 3px;
display: block;
width: 100%;
font-size: 16px;
padding: 0px 15px;
flex:1 1 auto;
font-family:"Roboto";
}
section.search menu {
display:flex;
flex-shrink: 0;
}
section.search menu button,
section.search menu a {
line-height: 50px;
vertical-align: middle;
display: inline-block;
padding: 0px 15px;
color: rgba(0,0,0,0.3);
background:transparent;
border:none;
border-left: 1px solid #FFF;
cursor:pointer;
outline:none;
}
section.search menu i {
vertical-align: middle;
}
/*
* Lists
*/

View file

@ -0,0 +1,109 @@
input[type="range"]:focus ~ .slider-label {
display: inline-block;
}
input[type=range] {
-webkit-appearance: none;
margin: 6px 0;
width: 200px;
}
input[type=range]:focus {
outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
width: 100%;
height: 8px;
cursor: pointer;
animate: 0.2s;
box-shadow: none;
background: rgba(0, 150, 136, 0.5);
background: rgba(102, 187, 106, 0.5);
border-radius: 5px;
border: none;
}
input[type=range]::-webkit-slider-thumb {
box-shadow: none;
border: none;
height: 26px;
width: 26px;
border-radius: 50px;
background: #009688;
background: #66bb6a;
cursor: pointer;
-webkit-appearance: none;
margin-top: -10px;
}
input[type=range]:focus::-webkit-slider-runnable-track {
background: rgba(0, 150, 136, 0.5);
background: rgba(102, 187, 106, 0.5);
}
input[type=range]::-moz-range-track {
width: 100%;
height: 8px;
cursor: pointer;
animate: 0.2s;
box-shadow: none;
background: rgba(0, 150, 136, 0.5);
background: rgba(102, 187, 106, 0.5);
border-radius: 5px;
border: none;
}
input[type=range]::-moz-range-thumb {
box-shadow: none;
border: none;
height: 26px;
width: 26px;
border-radius: 50px;
background: #009688;
background: #66bb6a;
cursor: pointer;
}
input[type=range]::-ms-track {
width: 100%;
height: 8.4px;
cursor: pointer;
animate: 0.2s;
background: transparent;
border-color: transparent;
border-width: 16px 0;
color: transparent;
}
input[type=range]::-ms-fill-lower {
background: #2a6495;
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-fill-upper {
background: #3071a9;
border: 0.2px solid #010101;
border-radius: 2.6px;
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]::-ms-thumb {
box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
border: 1px solid #000000;
height: 36px;
width: 16px;
border-radius: 3px;
background: #ffffff;
cursor: pointer;
}
input[type=range]:focus::-ms-fill-lower {
background: #3071a9;
}
input[type=range]:focus::-ms-fill-upper {
background: #367ebd;
}

View file

@ -0,0 +1,47 @@
* {
box-sizing: border-box;
}
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
textarea, input { outline: none; }

View file

@ -0,0 +1,52 @@
/*
http://codepen.io/batazor/pen/KwKryj
*/
.switch {
display: inline-block;
position: relative;
width: 40px;
height: 8px;
border-radius: 10.416666666666668px;
background: #E0E0E0;
-webkit-transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
vertical-align: middle;
cursor: pointer;
}
.switch::before {
content: '';
position: absolute;
top: -8.604166666666667px;
left: -2.604166666666667px;
width: 26.04166666666667px;
height: 26.04166666666667px;
background: #bdbdbd;
border-radius: 50%;
-webkit-transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1);
transition: left 0.28s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}
.switch:active::before {
box-shadow: 0 2px 10.416666666666668px rgba(0, 0, 0, 0.28), 0 0 0 25px rgba(0, 0, 0, 0.1);
}
.switch:active::before {
box-shadow: 0 2px 10.416666666666668px rgba(0, 0, 0, 0.28), 0 0 0 25px rgba(0, 0, 0, 0.1);
}
input:checked + .switch {
background: rgba(0, 150, 136, 0.5);
background: rgba(102, 187, 106, 0.5);
}
input:checked + .switch::before {
left: 20.562499999999996px;
background: #009688;
background: #66bb6a;
}
input:checked + .switch:active::before {
box-shadow: 0 2px 10.416666666666668px rgba(0, 0, 0, 0.28), 0 0 0 25px rgba(0, 150, 136, 0.2);
}

View file

@ -8,7 +8,7 @@ import (
"strings"
log "github.com/drone/drone/Godeps/_workspace/src/github.com/Sirupsen/logrus"
"github.com/drone/drone/Godeps/_workspace/src/github.com/naoina/toml"
// "github.com/drone/drone/Godeps/_workspace/src/github.com/naoina/toml"
"github.com/drone/drone/Godeps/_workspace/src/github.com/vrischmann/envconfig"
)
@ -108,11 +108,11 @@ func Load(path string) (*Config, error) {
// reads parameters from environment variables.
func LoadBytes(data []byte) (*Config, error) {
conf := &Config{}
err := toml.Unmarshal(data, conf)
if err != nil {
return nil, err
}
err = envconfig.InitWithPrefix(conf, "DRONE")
// err := toml.Unmarshal(data, conf)
// if err != nil {
// return nil, err
// }
err := envconfig.InitWithPrefix(conf, "DRONE")
if err != nil {
return nil, err
}