2
1
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2023-12-13 21:00:40 +01:00

Merge pull request #2369 from halfdan/bower_all_the_things

Replace SASS with assets from Ghost-UI
This commit is contained in:
Hannah Wolfe 2014-03-09 21:59:54 +00:00
commit 93f411cd55
47 changed files with 75 additions and 7113 deletions

6
.gitignore vendored
View file

@ -33,13 +33,9 @@ projectFilesBackup
/core/client/tpl/hbs-tpl.js
/core/client/assets/css
/core/client/assets/fonts
.sass-cache/
/core/client/assets/vendor
/core/client/assets/sass/config.rb
/core/client/assets/sass/layouts/config.rb
/core/client/assets/sass/modules/config.rb
/core/client/assets/sass/modules/bourbon
/core/client/assets/sass/modules/bourbon/*
/core/server/data/export/exported*
/docs
/_site

View file

@ -11,7 +11,6 @@ content/apps/**
!content/apps/README.md
node_modules/**
core/test/**
core/client/assets/sass/**
core/server/data/export/exported*
**/*.db*
*.db*

View file

@ -180,8 +180,6 @@ developing Ghost.
**Pre-requisites:**
* Node 0.10.x
* Ruby >= 1.9.3
* Bundler Ruby Gem (`gem install bundler`)
* for running functional tests: phantomjs 1.9.x and casperjs 1.1.x
([instructions](https://github.com/TryGhost/Ghost/wiki/Functional-testing-with-PhantomJS-and-CasperJS))
* for building docs: python and pygments
@ -197,7 +195,7 @@ developing Ghost.
* If the install fails with errors to do with "node-gyp rebuild" or "SQLite3", follow the SQLite3 install
instructions below this list
* Usually if you're within vagrant, and have installed the guest plugins and updated that, this will not happen
1. Run `grunt init` from the root - this runs bundler, generates the Bourbon directory, compiles SASS and compiles Handlebars templates
1. Run `grunt init` from the root - copies assets and compiles Handlebars templates
1. Run `npm start` from the root to start the server.
If something goes wrong, please see the
@ -207,7 +205,7 @@ If something goes wrong, please see the
Whilst developing, you can take advantage of the [Grunt toolkit](https://github.com/TryGhost/Ghost/wiki/Grunt-Toolkit) to automatically compile assets, such as handlebar templates, stylesheets and javascripts. Some useful commands include:
- `grunt dev` => Automatically compile assets in development environment
- `grunt prod` => Automatically compile assets in production environment
- `grunt watch` => Automatically compile sass and handlebars
- `grunt watch` => Automatically compile handlebars
Addresses for development:
- Front-end => <http://localhost:2368>
@ -220,8 +218,8 @@ or more of the following:
* `npm install` - fetch any new dependencies
* `git submodule update` - fetch the latest changes to Casper (the default theme)
* `grunt` - will recompile handlebars templates and sass for the admin (as long as you have previously
run `grunt init` to install bourbon)
* `grunt` - will recompile handlebars templates for the admin (as long as you have previously
run `grunt init` to install bower dependencies)
* delete content/data/*.db - delete the database and allow Ghost to recreate the fixtures
### Key Branches & Tags
@ -230,12 +228,6 @@ run `grunt init` to install bourbon)
release is here.
- **[gh-pages](http://tryghost.github.io/Ghost)** is The Ghost Guide documentation for Getting Started with Ghost.
### Compiling CSS & JavaScript
A SASS compiler is required to work with the CSS in this project. You can either do this by running `grunt` from
the command line - or by using a 3rd party app. We recommend [CodeKit](http://incident57.com/codekit/) (Paid/Mac)
& [Scout](http://mhs.github.io/scout-app/) (Free/Mac/PC).
You will need to have Ruby installed, as well as having run `gem install sass && gem install bourbon`.
## Grunt Toolkit
@ -251,11 +243,6 @@ contributor.
Sounds like you don't have our default theme - Casper, your content/themes/casper folder is probably empty.
When cloning from GitHub be sure to use SSH and to run `git submodule update --init`.
### I get "Syntax error: File to import not found or unreadable: bourbon/_bourbon."
Sounds like you don't have the Ruby gem "bourbon" installed. Make sure you have Ruby, and then
run `gem install bourbon`, and `grunt init`.
### Ghost doesn't do anything - I get a blank screen
Sounds like you probably didn't run the right grunt command for building assets

View file

@ -1,4 +0,0 @@
source 'https://rubygems.org'
gem 'sass'
gem 'bourbon'

View file

@ -1,15 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
bourbon (3.1.8)
sass (>= 3.2.0)
thor
sass (3.2.12)
thor (0.18.1)
PLATFORMS
ruby
DEPENDENCIES
bourbon
sass

View file

@ -53,10 +53,6 @@ var path = require('path'),
files: ['core/client/tpl/**/*.hbs'],
tasks: ['handlebars']
},
sass: {
files: ['<%= paths.adminAssets %>/sass/**/*'],
tasks: ['sass:admin']
},
concat: {
files: [
'core/client/*.js',
@ -73,8 +69,6 @@ var path = require('path'),
'content/themes/casper/css/*.css',
// Theme JS
'content/themes/casper/js/*.js',
// Admin CSS
'<%= paths.adminAssets %>/css/*.css',
// Admin JS
'core/built/scripts/*.js'
],
@ -302,35 +296,10 @@ var path = require('path'),
}
},
// ### Config for grunt-contrib-sass
// Compile all the SASS!
sass: {
admin: {
files: {
'<%= paths.adminAssets %>/css/screen.css': '<%= paths.adminAssets %>/sass/screen.scss'
}
},
compress: {
options: {
style: 'compressed'
},
files: {
'<%= paths.adminAssets %>/css/screen.css': '<%= paths.adminAssets %>/sass/screen.scss'
}
}
},
// ### config for grunt-shell
// command line tools
shell: {
// run bundle
bundle: {
command: 'bundle install'
},
// install bourbon
bourbon: {
command: 'bourbon install --path <%= paths.adminAssets %>/sass/modules/'
},
bower: {
command: path.resolve(__dirname + '/node_modules/.bin/bower install'),
options: {
@ -410,6 +379,11 @@ var path = require('path'),
src: 'jquery.js',
dest: 'core/built/public/',
expand: true
}, {
cwd: 'bower_components/ghost-ui/dist/',
src: ['**'],
dest: 'core/client/assets/',
expand: true
}]
},
prod: {
@ -418,6 +392,11 @@ var path = require('path'),
src: 'jquery.js',
dest: 'core/built/public/',
expand: true
}, {
cwd: 'bower_components/ghost-ui/dist/',
src: ['**'],
dest: 'core/client/assets/',
expand: true
}]
},
release: {
@ -426,6 +405,11 @@ var path = require('path'),
src: 'jquery.js',
dest: 'core/built/public/',
expand: true
}, {
cwd: 'bower_components/ghost-ui/dist/',
src: ['**'],
dest: 'core/client/assets/',
expand: true
}, {
expand: true,
src: buildGlob,
@ -864,15 +848,13 @@ var path = require('path'),
grunt.registerTask('release',
'Release task - creates a final built zip\n' +
' - Do our standard build steps (sass, handlebars, etc)\n' +
' - Do our standard build steps (handlebars, etc)\n' +
' - Generate changelog for the past 14 releases\n' +
' - Copy files to release-folder/#/#{version} directory\n' +
' - Clean out unnecessary files (travis, .git*, .af*, .groc*)\n' +
' - Zip files in release-folder to dist-folder/#{version} directory',
[
'shell:bourbon',
'shell:bower',
'sass:compress',
'handlebars',
'concat',
'uglify',
@ -884,7 +866,6 @@ var path = require('path'),
grunt.registerTask('dev',
'Dev Mode; watch files and restart server on changes',
[
'sass:admin',
'handlebars',
'concat',
'copy:dev',
@ -928,13 +909,13 @@ var path = require('path'),
// ### Tools for building assets
grunt.registerTask('init', 'Prepare the project for development', ['shell:bundle', 'shell:bourbon', 'shell:bower', 'default']);
grunt.registerTask('init', 'Prepare the project for development', ['shell:bower', 'default']);
// Before running in production mode
grunt.registerTask('prod', 'Build CSS, JS & templates for production', ['sass:compress', 'handlebars', 'concat', 'uglify', 'copy:prod']);
grunt.registerTask('prod', 'Build JS & templates for production', ['handlebars', 'concat', 'uglify', 'copy:prod']);
// When you just say 'grunt'
grunt.registerTask('default', 'Build CSS, JS & templates for development', ['update_submodules', 'sass:compress', 'handlebars', 'concat', 'copy:dev']);
grunt.registerTask('default', 'Build JS & templates for development', ['update_submodules', 'handlebars', 'concat', 'copy:dev']);
};
module.exports = configureGrunt;

View file

@ -5,6 +5,7 @@
"codemirror": "3.15.0",
"Countable": "2.0.2",
"fastclick": "1.0.0",
"ghost-ui": "0.1.0",
"handlebars.js": "1.0.0",
"iCheck": "1.0.1",
"jquery": "1.11.0",

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Binary file not shown.

View file

@ -1 +0,0 @@
/* IE specific override styles. */

View file

@ -1,337 +0,0 @@
/*
* These styles control elements specific to the Ghost admin login / signup screens.
*
* Table of Contents:
*
* 0. General
* 1. Login
* 2. Signup
*
*/
/* =============================================================================
0. General
============================================================================= */
.ghost-login,
.ghost-signup,
.ghost-forgotten,
.ghost-reset {
color: $midgrey;
background: $darkgrey;
@include breakpoint($mobile) {
background: $darkgrey;
}
main {
top: 15px;
}
input:-webkit-autofill {
-webkit-box-shadow: 0 0 0px 1000px $lightgrey inset !important;
}
}//.ghost-login
.login-box,
.signup-box,
.forgotten-box,
.reset-box {
max-width: 530px;
height: 90%;
margin: 0 auto;
padding: 0;
display: table;
@include breakpoint(630px) {
max-width: 264px;
text-align: center;
}
}
/* =============================================================================
1. Login
============================================================================= */
.login-form {
@include box-sizing(border-box);
max-width: 530px;
color: lighten($midgrey, 15%);
display: table-cell;
vertical-align: middle;
@include breakpoint(630px) {
max-width: 264px;
}
div { // Yes. Really.
position:relative;
margin:0 0 5px 0;
background: lighten($darkgrey, 10%);
float: left;
@include breakpoint(630px) { margin-bottom: 1em; }
}
input {
display:inline-block;
clear:both;
margin:0;
padding: 8px 0 8px 8px;
width: 216px;
position: relative;
border: none;
color: #fff;
font-size: 1.1em;
font-weight: 200;
background: transparent;
box-shadow: none;
@include transition(background ease 0.25s);
@include breakpoint(630px) {
width:264px;
@include transition(none);
}
&:focus {
border: none;
background: lighten($darkgrey, 15%);
}
}
.email-wrap {
position:relative;
@include icon($i-mail, 12px) {
position:absolute;
bottom:11px;
left:8px;
z-index:100;
}
margin-right: 3px;
border-radius: 2px 0 0 2px;
@include breakpoint(630px) {
margin-right:0;
border-radius: 2px;
}
.email {
padding-left: 28px;
border-radius: 2px 0 0 2px;
}
}
.password-wrap {
position:relative;
@include icon($i-lock, 10px) {
position:absolute;
bottom:12px;
left:11px;
z-index:100;
}
border-radius: 0 2px 2px 0;
@include breakpoint(630px) {
border-radius: 2px;
}
.password {
padding-left: 28px;
border-radius: 0 2px 2px 0;
}
}
button {
width: 85px;
height: 36px;
margin:0 0 0 10px;
padding: 0.5em 1.37em;
min-height: 30px;
min-width: 80px;
box-shadow: rgba(255,255,255,0.15) 0 1px 0 inset;
@include breakpoint(630px) {
margin:0;
width: 100%;
margin-bottom: 1em;
}
}
.meta {
clear:both;
color: $midgrey;
}
a {
color: darken($midgrey, 10%);
font-size: 0.9em;
&:hover {
color: lighten($midgrey, 5%);
text-decoration: none;
}
}
}
/* =============================================================================
2. Signup and Reset
============================================================================= */
.signup-form, .reset-form {
@include box-sizing(border-box);
max-width: 280px;
color: lighten($midgrey, 15%);
display: table-cell;
vertical-align: middle;
@include breakpoint(630px) {
width: 264px;
}
div { // Yes. Really.
position:relative;
margin:0 0 1em 0;
background: lighten($darkgrey, 10%);
float: left;
display: table;
}
input {
margin:0;
width: 280px;
padding: 8px 10px;
position: relative;
border: none;
color: #fff;
font-size: 1.1em;
font-weight: 200;
background: transparent;
box-shadow: none;
@include transition(background ease 0.25s);
@include breakpoint(630px) {
@include transition(none);
width: 264px;
}
&:focus {
border: none;
background: lighten($darkgrey, 15%);
}
}
.name-wrap {
position:relative;
border-radius: 2px;
.name {
border-radius: 2px;
}
}
.email-wrap {
position:relative;
border-radius: 2px;
.email {
border-radius: 2px;
}
}
.password-wrap {
position:relative;
border-radius: 2px;
.password {
border-radius: 2px;
}
}
button {
@include box-sizing(border-box);
width: 100%;
height: 36px;
margin: 0 0 1em 0;
padding: 0.5em 1.37em;
min-height: 30px;
min-width: 80px;
box-shadow: rgba(255,255,255,0.15) 0 1px 0 inset;
}
}
/* =============================================================================
3. Forgotten
============================================================================= */
.forgotten-form {
@include box-sizing(border-box);
max-width: 280px;
color: lighten($midgrey, 15%);
display: table-cell;
vertical-align: middle;
@include breakpoint(630px) {
max-width: 264px;
}
div { // Yes. Really.
position:relative;
margin:0 0 1em 0;
background: lighten($darkgrey, 10%);
float: left;
}
input {
margin:0;
padding: 8px 10px;
position: relative;
border: none;
color: #fff;
font-size: 1.1em;
font-weight: 200;
background: transparent;
box-shadow: none;
@include transition(background ease 0.25s);
@include breakpoint(630px) {
@include transition(none);
max-width: 244px;
}
&:focus {
border: none;
background: lighten($darkgrey, 15%);
}
}
.email-wrap {
position:relative;
border-radius: 2px;
.email {
border-radius: 2px;
}
}
button {
@include box-sizing(border-box);
width: 100%;
height: 36px;
margin: 0 0 1em 0;
padding: 0.5em 1.37em;
min-height: 30px;
min-width: 80px;
box-shadow: rgba(255,255,255,0.15) 0 1px 0 inset;
}
}

View file

@ -1,882 +0,0 @@
/*
* These styles control elements specific to the post editor screen
* used for publishing content with Ghost.
*
* Table of Contents:
*
* Editor / Preview
* Post Preview Content
* Full Screen Mode
* Publish Bar
* CodeMirror
*/
/* =============================================================================
Editor / Preview
============================================================================= */
.editor {
.notifications {
@include breakpoint($biggerthan-mobile) {
bottom: 40px;
}
}
// The main post title
.entry-title {
@extend %box;
height: 53px;
padding: 2px 15px;
margin-bottom: 5px;
position: relative;
@include breakpoint($mobile) {
box-shadow: none;
}
input {
border: 0;
margin: 0;
padding: 0;
font-size: 3em;
font-weight: bold;
letter-spacing: -1px;
width: 100%;
background: transparent;
&:focus {
outline: 0;
}
}
}
.entry-container {
position: relative;
height: 100%;
}
// The two content panel wrappers, positioned left/right
.entry-markdown { left: 0; border-right: $lightbrown 2px solid; }
.entry-preview { right: 0; border-left: $lightbrown 2px solid; }
// The visual styles for both panels
.entry-markdown, .entry-preview {
@include box-sizing(border-box);
width: 50%;
padding: 15px;
position: absolute;
bottom: 40px; // height of the publish bar
top: 61px; // height of the post title + margin
background: #fff;
box-shadow: $shadow;
@include breakpoint($mobile) {
box-shadow: none;
}
// Convert all content areas to small boxes
@include breakpoint($netbook) {
top: 109px;
left: 0;
right: 0;
width: 100%;
border: none;
z-index: 100;
min-height: 380px;
.markdown, .entry-preview-content {
height: 50px;
overflow: hidden;
}
}
.floatingheader {
// Turn headers into tabs which act as links
// both headers set to grey/inactive colour
@include breakpoint($netbook) {
cursor: pointer;
width: 50%;
border-right: $lightbrown 2px solid;
color: #fff;
font-weight: normal;
background: $brown;
position: absolute;
top: -40px;
left: 0;
box-shadow: rgba(0,0,0,0.1) 0 -2px 3px inset;
a {
color: #fff;
}
}
a {
color: $brown;
}
.markdown-help {
position: relative;
top: -5px;
right: -5px;
@include icon($i-question, '', lighten($brown, 15%));
float: right;
padding: 5px;
&:hover {
@include icon($i-question, '', $brown);
}
}
.entry-word-count {
float: right;
}
}
// Give the tab with the .active class the highest z-index
&.active {
z-index: 200;
}
// Restore the normal height of the .active tab (inactive tab stays small, hidden behind)
&.active .markdown,
&.active .entry-preview-content {
height: auto;
overflow: auto;
}
// Restore the white bg of the currently .active tab, remove hand cursor from currently active tab
&.active header {
@include breakpoint($netbook) {
cursor: auto;
color: $brown;
background: #fff;
box-shadow: none;
a {
color: $brown;
}
}
}
// Hide markdown icon + wordcount when we hit mobile
@include breakpoint($mobile) {
.markdown-help,
.entry-word-count {
display: none;
}
}
}
.entry-markdown-content {
textarea {
border: 0;
width: 100%;
height: 100%;
max-width: 100%;
margin: 0;
padding: 0;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
&:focus {
outline: 0;
}
}
.CodeMirror {
height: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-family: $font-family-mono;
font-size: 1.4em;
line-height: 1.3em;
color: lighten($darkgrey, 10%);
.CodeMirror-focused,
.CodeMirror-selected {
color: $darkgrey;
background: lighten($blue, 20%);
text-shadow: none;
}
::selection {
color: $darkgrey;
background: lighten($blue, 20%);
text-shadow: none;
}
}
.CodeMirror-lines {
padding: 65px 0 40px 0; /* Vertical padding around content */
@include breakpoint($netbook) {padding-top: 25px;}
@include breakpoint($mobile) {padding: 15px 0;}
}
.CodeMirror pre {
padding: 0 40px; /* Horizontal padding of content */
@include breakpoint($mobile) {padding: 0 15px;}
}
.cm-header {
color: #000;
font-size: 1.4em;
line-height: 1.4em;
font-weight: bold;
}
.cm-variable-2,
.cm-variable-3,
.cm-keyword {
color: lighten($darkgrey, 10%);
}
.cm-string,
.cm-strong,
.cm-link,
.cm-comment,
.cm-quote,
.cm-number,
.cm-atom,
.cm-tag {
color: #000;
font-weight: bold;
}
}
.entry-preview {
// Align the tab of entry-preview on the right
.floatingheader {
@include breakpoint($netbook) {
right: 0;
left: auto;
border-right: none;
border-left: $lightbrown 2px solid;
}
}
.entry-preview-content {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 60px 40px 40px 40px;
overflow: auto;
word-break: break-word;
hyphens: auto;
@include user-select(none);
cursor: default;
// Tweak padding for smaller screens
@include breakpoint($netbook) {padding-top: 20px;}
@include breakpoint($mobile) {padding: 15px;}
}
}
// Special case, when scrolling, add shadows to content headers.
.scrolling {
.floatingheader {
@include breakpoint($netbook) {
box-shadow: none;
}
&::before,
&::after {
@include breakpoint($netbook) {display: none;}
}
}
.CodeMirror-scroll,
.entry-preview-content {
@include breakpoint($netbook) {
box-shadow: 0 5px 5px rgba(0,0,0,0.05) inset;
}
}
}
}//.editor
/* =============================================================================
Post Preview Content
============================================================================= */
// The styles for the actual content inside the preview
// TODO: These should just be defaults, overridden by editor.hbs in theme dir
.entry-preview-content,
.content-preview-content {
font-size: 1.4em;
line-height: 1.5em;
a {
color: $blue;
text-decoration: underline;
}
p {
margin: 1.2em 0 1.6em;
&:first-child {
margin-top: 0;
}
}
h1 {
font-size: 3em;
}
h2 {
font-size: 2.2em;
}
h3 {
font-size: 1.8em;
}
.btn {
text-decoration: none;
color: $grey;
}
.img-placeholder {
border: 5px dashed $grey;
height: 100px;
position: relative;
span {
display: block;
height: 30px;
position: absolute;
margin-top: -15px;
top: 50%;
width: 100%;
text-align: center;
}
}
a {
&.image-edit {
width: 16px;
height: 16px;
}
}
img {
max-width: 100%;
height: auto;
margin: 0 auto;
}
}
/* =============================================================================
Full Screen Mode
============================================================================= */
body.zen {
background: lighten($lightbrown, 3%);
.usermenu {display: none;}
#global-header, #publish-bar {
opacity: 0;
height: 0;
overflow: hidden;
@include transition(all 0.5s ease-out);
}
main {top: 15px;@include transition(all 0.5s ease-out);}
.entry-markdown, .entry-preview {bottom: 0;@include transition(all 0.5s ease-out);}
}
/* =============================================================================
Publish Bar
============================================================================= */
#publish-bar {
@include box-sizing(border-box);
height: 40px;
padding: 0;
color: $midgrey;
background: darken($darkgrey, 4%);
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 900;
box-shadow: 0 -2px 8px rgba(0,0,0,0.2);
@include transform(translateZ(0));
@include breakpoint($netbook) {font-weight: normal;}
.post-settings {
&:hover,
&.active {
color: $lightgrey;
}
}
.post-settings-menu {
position: absolute;
bottom: 44px;
right: -3px;
}
button {
min-height: 30px;
height: 30px;
line-height: 12px;
padding: 0 10px;
margin-top: 5px;
border-top: rgba(255,255,255,0.4) 1px solid;
}
.button-link { border-top: none; }
.options {
width: 30px;
min-height: 30px;
height: 30px;
margin-top: 5px;
box-shadow: rgba(255,255,255,0.4) 0 1px 0 inset;
}
.splitbutton-save,
.splitbutton-delete{
.button-save,
.button-delete{
@include transition(width 0.25s ease, background-color 0.3s linear);
}
.editor-options{
@extend %menu;
@extend %menu-right;
bottom: 140%;
right: -3%;
a{
font-size: 14px;
}
}
}
}
.extended-tags { // When the tag bar is exapanded
position: static;
min-height: 100%;
#entry-tags {
&:after {
right: 10px;
}
}
.tags {
width: 281px;
}
.tag-label, .tag-label.touch {
color: #fff;
}
.tag-input {
width: 100%;
margin-top: 5px;
padding-top: 5px;
padding-left: 10px;
border-top: 1px solid $darkgrey;
}
.right {
display: none;
}
}
#entry-tags {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
text-transform: none;
padding: 10px 0 0 0;
&:after {
content: "";
position: fixed;
top: 10px;
right: 270px;
width: 20px;
height: 26px;
@include linear-gradient(left, rgba(26, 28, 29, 0.00), rgba(26, 28, 29, 1.00));
z-index: 9999;
pointer-events: none;
@include breakpoint($mobile) {
right: 161px;
}
}
.tags {
position: relative;
display: inline-block;
vertical-align: middle;
width: auto;
max-width: 80%;
max-width: calc(100% - 320px);
height: 26px;
padding-left: 5px;
padding-bottom: 20px;
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
white-space: nowrap;
@include transition(width 0.2s linear);
@include breakpoint($mobile) {
@include box-sizing(border-box);
display: block;
width: 115px;
max-width: inherit;
padding-bottom: 0;
}
}
.tag-label {
display: block;
float: left;
@include icon($i-tag);
padding: 1px 8px 0 8px;
@include transition;
&:hover {
cursor: pointer;
color: $lightgrey;
}
&.touch {
color: inherit;
}
}
input[type="text"].tag-input {
display: inline-block;
padding: 0;
vertical-align: top;
color: $lightgrey;
font-weight: 300;
background: transparent;
border: none;
&:focus {
outline: none;
}
}
.tag {
@include icon-after($i-x, 8px, $darkgrey) {
margin-left: 4px;
vertical-align: 10%;
text-shadow: rgba(255,255,255,0.15) 0 1px 0;
@include transition;
}
display: inline;
margin-right: 5px;
padding: 0 5px;
color: $lightgrey;
white-space: nowrap;
background: lighten($grey, 15%);
border-radius: $rounded;
box-shadow:
rgba(255,255,255,0.2) 0 1px 0 inset,
#000 0 1px 3px;
@include user-select(none);
&:hover {
cursor: pointer;
@include icon-after($i-x, 8px, $lightgrey) {
margin-left: 4px;
vertical-align: 10%;
text-shadow: none;
}
}
}
}
.suggestions {
@extend %menu;
bottom: 100%;
li.selected{
background: $blue;
box-shadow:
rgba(255,255,255,0.2) 0 1px 0 inset,
rgba(0,0,0,0.5) 0 1px 5px;
}
li a {
padding-left: 25px;
}
mark{
background: none;
color: white;
font-weight: bold;
}
}
#entry-controls {
@include box-sizing(border-box);
display: inline-block;
position: relative;
padding: 0;
z-index: 1;
&.unsaved {
.post-settings-menu {
padding-bottom: 0;
.post-setting:nth-child(3) td {
border-bottom: none;
}
.delete {
display: none;
}
}
}
}
#entry-actions {
margin-right: 6px;
position: relative;
}
#entry-actions-menu {
position: absolute;
bottom: 50px;
right: -5px;
}
/* =============================================================================
Markdown Help Modal
============================================================================= */
.markdown-help-container{
padding-bottom: 20px;
}
.modal-markdown-help-table {
margin-top: 0;
}
/* =============================================================================
CodeMirror
============================================================================= */
.CodeMirror {
/* Set height, width, borders, and global font properties here */
font-family: monospace;
height: 300px;
}
.CodeMirror-scroll {
/* Set scrolling behaviour here */
overflow: auto;
}
/* PADDING */
.CodeMirror-lines {
padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre {
padding: 0 4px; /* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler {
background-color: white; /* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters {
border-right: 1px solid #ddd;
background-color: #f7f7f7;
}
/* CURSOR */
.CodeMirror div.CodeMirror-cursor {
border-left: 1px solid black;
z-index: 3;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
border-left: 1px solid silver;
}
.cm-tab { display: inline-block; }
/* DEFAULT THEME */
.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable {color: black;}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-property {color: black;}
.cm-s-default .cm-operator {color: black;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-error {color: #f00;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #00c;}
.cm-s-default .cm-header {color: blue;}
.cm-s-default .cm-quote {color: #090;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #00c;}
.cm-negative {color: #d44;}
.cm-positive {color: #292;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-link {text-decoration: underline;}
.cm-invalidchar {color: #f00;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror {
line-height: 1;
position: relative;
overflow: hidden;
background: white;
color: black;
}
.CodeMirror-scroll {
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror */
margin-bottom: -30px; margin-right: -30px;
padding-bottom: 30px; padding-right: 30px;
height: 100%;
outline: none; /* Prevent dragging from highlighting the element */
position: relative;
}
.CodeMirror-sizer {
position: relative;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actuall scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler {
position: absolute;
z-index: 6;
display: none;
}
.CodeMirror-vscrollbar {
right: 0; top: 0;
overflow-x: hidden;
overflow-y: scroll;
}
.CodeMirror-hscrollbar {
bottom: 0; left: 0;
overflow-y: hidden;
overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
right: 0; bottom: 0;
z-index: 6;
}
.CodeMirror-gutters {
position: absolute; left: 0; top: 0;
height: 100%;
padding-bottom: 30px;
z-index: 3;
}
.CodeMirror-lines {
cursor: text;
}
.CodeMirror pre {
/* Reset some styles that the rest of the page might have set */
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
border-width: 0;
background: transparent;
font-family: inherit;
font-size: inherit;
margin: 0;
white-space: pre;
word-wrap: normal;
line-height: inherit;
color: inherit;
z-index: 2;
position: relative;
overflow: visible;
}
.CodeMirror-wrap pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: normal;
}
.CodeMirror-wrap .CodeMirror-scroll {
overflow-x: hidden;
}
.CodeMirror-measure {
position: absolute;
width: 100%; height: 0px;
overflow: hidden;
visibility: hidden;
}
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor {
position: absolute;
visibility: hidden;
border-right: none;
width: 0;
}
.CodeMirror-focused div.CodeMirror-cursor {
visibility: visible;
}
.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror span { *vertical-align: text-bottom; }
@media print {
/* Hide the cursor when printing */
.CodeMirror div.CodeMirror-cursor {
visibility: hidden;
}
}

View file

@ -1,107 +0,0 @@
/*
* These styles control elements specific to the error screens
*
* Table of Contents:
*
* General
* 404
*/
/* =============================================================================
General
============================================================================= */
.error-content {
max-width: 530px;
margin: 0 auto;
padding: 0;
display: table;
height: 100%;
@include breakpoint(630px) {
max-width: 264px;
text-align: center;
}
}
.error-details {
display: table-cell;
vertical-align: middle;
}
.error-image {
display: inline-block;
vertical-align: middle;
width: 96px;
height: 150px;
@include breakpoint(630px) {
width: 72px;
height: 112px;
}
img {
width: 100%;
height: 100%;
}
}
.error-message {
position: relative;
top: -5px;
display: inline-block;
vertical-align: middle;
margin-left: 10px;
}
.error-code {
margin: 0;
font-size: 7.8em;
line-height: 0.9em;
color: #979797;
@include breakpoint(630px) {
font-size: 5.8em;
}
}
.error-description {
margin: 0;
padding: 0;
font-weight: 300;
font-size: 1.9em;
color: #979797;
border: none;
@include breakpoint(630px) {
font-size: 1.4em;
}
}
.error-stack {
margin: 1em auto;
padding: 2em;
max-width: 800px;
background-color: rgba(255,255,255,0.3);
}
.error-stack-list {
list-style-type: none;
padding: 0;
margin: 0;
}
.error-stack-list li {
display: block;
&::before {
color: #BBB;
content: "\21AA";
display: inline-block;
font-size: 1.2em;
margin-right: 0.5em;
}
}
.error-stack-function {
font-weight: bold;
}

View file

@ -1,291 +0,0 @@
/*
* These styles control elements specific to the manage posts screen
* used for previewing and reading existing content in Ghost.
*
* Table of Contents:
*
* Manage
* Preview
*
*/
/* =============================================================================
Manage
============================================================================= */
.manage {
.content-view-container {
position: relative;
height: 100%;
width: 100%;
@include breakpoint($tablet) {
overflow-x: hidden;
}
}
.content-list {
@include box-sizing(border-box);
width: 35%;
padding: 15px;
position: absolute;
bottom:0;
top:0;
left:0;
border-right:$lightbrown 2px solid;
background: #fff;
box-shadow: $shadow;
@include breakpoint($tablet) {
width:auto;
right:0;
z-index: 500;
border:none;
}
.content-filter {
position:relative;
z-index: 300;
> a {
padding: 5px;
margin-left:-5px;
}
.menu-drop {
display: block;
}
}
.button-add {
@include icon($i-add);
position:absolute;
top:10px;
right:15px;
z-index: 700;
color: #fff;
padding-left:5px;
}
.content-list-content {
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
overflow: auto;
padding-top: 40px;
}
.entry-title {
font-size: 1.4em;
line-height:1.1em;
margin-bottom:0.5em;
font-weight: normal;
}
.views {
@include icon($i-stats, 10px, $brown);
float:right;
text-align: right;
margin-left:15px;
@include breakpoint($tablet) {
float:none;
}
}
.featured .status {
@include icon($i-featured, 11px) {
margin-right: 10px;
vertical-align: 7%;
};
}
.status .draft {
color: $red;
}
.status .scheduled {
color: $orange;
}
ol {
list-style: none;
padding:0;
margin:0;
border-top: $lightbrown 1px solid;
li {
margin:0;
padding: 0;
border-bottom: $lightbrown 1px solid;
position:relative;
a {
display:block;
padding:20px 15px;
color: $brown;
@include breakpoint($mobile) { padding:15px; }
@include breakpoint($tablet) { padding-right: 40px; }
@include icon-after($i-chevron) {
position:absolute;
top:50%;
margin-top:-6px;
right:15px;
}
@include breakpoint($biggerthan-tablet) { &::after {display: none} }
&:hover { text-decoration: none; }
}
}//li
li.active {
@include breakpoint($biggerthan-tablet) {
// only apply active styles on larger devices
border-bottom: lighten($midgrey, 40%) 1px solid;
background: lighten($midgrey, 45%);
box-shadow:
lighten($midgrey, 40%) 0 -1px 0, // top border
rgba(0,0,0,0.06) 7px 0 0 inset, // big left border
lighten($midgrey, 40%) 1px 0 0 inset; // small left border
a:hover {
box-shadow: rgba(0,0,0,0.1) 7px 0 0 inset;
@include transition(all 0.4s ease);
}
.entry-title { font-weight: bold; }
.entry-meta { color: $darkgrey; }
.views {
@include icon($i-stats, 10px, $darkgrey);
color: $darkgrey;
font-weight: normal;
}
}
}//li.active
}
}//.content-list
/* =============================================================================
Preview
============================================================================= */
.content-preview {
@include box-sizing(border-box);
width: 65%;
padding: 15px;
position: absolute;
bottom:0;
top:0;
right:0;
border-left:$lightbrown 2px solid;
background: #fff;
box-shadow: $shadow;
@include breakpoint($tablet) {
width: auto;
left: 100%;
right: -100%;
margin-left: 15px;
border:none;
}
.unfeatured {
@include icon($i-unfeatured, 14px);
vertical-align: -6%;
margin: 0 7px 0 -5px;
padding: 5px;
}
.featured {
@include icon($i-featured, 14px);
vertical-align: -6%;
margin: 0 7px 0 -5px;
padding: 5px;
}
.normal {
text-transform: none;
margin:0 3px;
}
.content-preview-content {
position: absolute;
top:0;
right:0;
bottom:0;
left:0;
overflow: auto;
padding: 80px 40px;
word-break: break-word;
hyphens: auto;
.wrapper {
max-width: 700px;
margin:0 auto;
}
}
.post-controls {
float:right;
position: relative;
}
.post-settings-menu {
position: absolute;
top: 35px;
right: -3px;
}
.post-edit {
@include icon($i-edit, 14px);
margin-right:7px;
padding: 5px;
}
img {
width:100%;
height:auto;
}
}//.preview-post
.no-posts-box {
position: relative;
height: 90%;
margin: 0px auto;
padding: 0px;
display: table;
z-index: 600;
@include breakpoint($tablet) {
position: fixed;
top: 45%;
left: 50%;
}
.no-posts {
vertical-align: middle;
display: table-cell;
text-align: center;
@include breakpoint($tablet) {
display: block;
position: relative;
left: -50%;
}
h3 {
color: $brown;
font-weight: 200;
font-size: 2em;
}
}
}//.no-posts-box
}//.manage

View file

@ -1,181 +0,0 @@
/* =============================================================================
Plugins
============================================================================= */
.settings {
.plugin-section {
padding-bottom: 20px;
}
.plugin-section-header {
h3 {
margin: 15px 0;
font-size: 1.1em;
font-weight: normal;
color: $brown;
}
}
.plugin-section-footer {
text-align: right;
}
.button-update-all {
@include icon($i-lightning, 1em, #FFC125) {
margin-right: 5px;
};
}
.button-cancel {
@include icon($i-x, 1em, #fff) {
margin-right: 5px;
};
}
.plugin-section-table {
margin-top: 5px;
tbody > tr:nth-child(odd) > td {
background: none;
}
.plugin-section-item {
&.inactive {
.plugin-meta {
opacity: 0.4;
}
td:last-child {
.plugin-meta {
opacity: 1;
}
}
}
td {
padding: 20px 0;
border-bottom:$lightbrown 1px solid;
&:first-child {
padding-left: 0px;
border-top:$lightbrown 1px solid;
.plugin-meta {
padding: 0px;
width: 75%;
border-left: none;
text-align: left;
}
}
&:last-child {
.plugin-meta {
padding: 0px;
text-align: right;
}
}
}
}
.plugin-icon {
display: inline-block;
width: 40px;
height: 40px;
margin-right: 15px;
background: #FFC125;
border-radius: 5px;
vertical-align: middle;
img {
width: 100%;
}
}
.plugin-meta {
@include box-sizing(border-box);
display: inline-block;
width: 100%;
height: 100%;
padding: 0 20px;
vertical-align: middle;
border-left: $lightbrown 1px solid;
text-align: center;
}
.plugin-info {
display: block;
color: lighten($grey, 5%);
font-size: 1.2em;
font-weight: normal;
vertical-align: top;
}
.plugin-title {
color: $grey;
}
.plugin-sub-info {
display: block;
color: $midgrey;
}
.plugin-download-progress {
position: relative;
display: block;
height: 6px;
margin-top: 10px;
background: $lightbrown;
border-radius: 3px;
> span {
position: absolute;
left: 0;
top: 0;
content: "";
height: 100%;
background-color: $blue;
border-radius: 3px;
}
}
.rating {
unicode-bidi: bidi-override;
text-align: center;
> span {
display: inline-block;
position: relative;
width: 1.1em;
height: 1.1em;
font-size: 0.8em;
&:before {
content: "\2605";
position: absolute;
left: 0;
opacity: 0.5;
}
&.active {
&:before {
content: "\2605";
opacity: 1;
}
}
}
}
.plugin-settings-icon {
display: block;
margin-top: 9px;
font-size: 1.4em;
@include icon($i-settings, 1em, $grey);
}
} //.plugin-section-table
} //.settings

View file

@ -1,325 +0,0 @@
/*
* These styles control elements specific to the settings screen
* used for configuring your Ghost install.
*
* Table of Contents:
*
* General
* Sidebar
* Content
*
*/
/* =============================================================================
Settings
============================================================================= */
.settings {
// The main white bg for the page
.wrapper {
background: #fff;
box-shadow: $shadow;
position: relative;
width: 100%;
height: 100%;
margin:0;
padding:0;
@include breakpoint($tablet) {
overflow-x: hidden;
}
}
.title {
text-transform: uppercase;
font-weight: normal;
font-size: 1.6em;
line-height: 0.8em;
margin:0 0 18px 0;
padding:0;
border: none;
}
/* =============================================================================
Sidebar
============================================================================= */
//The whole left column sidebar, duh.
.settings-sidebar {
width:20%;
position:absolute;
top:0;
left:0;
bottom:0;
z-index: 700;
background: #fff;
box-shadow: $lightbrown 1px 0 0;
@include breakpoint($tablet) {
width:100%;
box-shadow: none;
}
> header {
position: relative;
z-index: 400;
height: 17px;
padding: 30px 15px 30px 40px;
margin-bottom: 0;
border-bottom: none;
box-shadow: #edece4 0 -1px 0 inset, #edece4 1px 0 0;
//Transparent gradient to make bg fade out as it goes out the top.
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(25%,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,0.90)));
background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
@include breakpoint($netbook) {
padding-left: 15px;
};
}
}//.settings-sidebar
//Main settings-menu styles, apply to every item
.settings-menu {
position:absolute;
top: 0;
left:0;
bottom:0;
right:-1px;
overflow: auto;
@include breakpoint($tablet) { right:0; };
// Create placeholder the same height as the floating header
// to push content down by the same amount
&:before {
display: block;
content: "";
height: 77px; //30px + 17px title + 30px
}
ul {
border-top:none;
@include breakpoint($tablet) { border-bottom: #edece4 1px solid; }
}
li {
margin-right:1px;
border-top: #fff 1px solid;
@include breakpoint($tablet) {
margin-right:0;
border-top: #edece4 1px solid;
}
a {
padding:15px 15px 15px 40px;
border-bottom:none;
@include breakpoint($netbook) { padding-left: 15px; }
@include breakpoint($tablet) {
@include icon-after($i-chevron) {float:right;margin-top:5px;};
}
}
&:first-child { border-top: none; }
&:first-child.active { border-top:none; }
&.active {
@include breakpoint($biggerthan-tablet) {
// only apply active styles on larger devices
margin-right:0;
position:relative;
z-index: 300;
border-top: #edece4 1px solid;
box-shadow:
#fff 1px 0 0,
#edece4 0 1px 0;
@include transition;
a {
color: $darkgrey;
font-weight: bold;
background: #fff;
}
}
}//.active
}//li
// Give all icons some space
li a:before {
margin-right: 20px;
@include breakpoint($netbook) {
margin-right: 15px;
}
}
// Add the icons for specific menu items
.general a { @include icon($i-settings) }
.publishing a { @include icon($i-content) }
.services a { @include icon($i-services) }
.users a { @include icon($i-users) }
.appearance a { @include icon($i-appearance) }
.apps a { @include icon($i-plugins) }
}//.settings-menu
/* =============================================================================
Content
============================================================================= */
// The main content panel on the right
.settings-content {
padding:0;
position:absolute;
top:0;
right:0;
left:20%;
bottom:0;
background: #fff;
@include breakpoint($tablet) {
display: none;
width: 100%;
left: 100%;
right: -100%;
margin-left: 15px;
}
img {
max-width: 100%;
}
display: none;
&.active {display:block;}
> header {
position: relative;
z-index: 200;
height: 17px;
padding: 30px 220px 29px 40px;
border-bottom:$lightbrown 1px solid;
margin-bottom:40px;
text-transform: none;
font-weight: normal;
line-height: inherit;
color: inherit;
//Transparent gradient to make bg fade out as it goes out the top.
background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(255,255,255,1) 25%, rgba(255,255,255,0.90) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(25%,rgba(255,255,255,1)), color-stop(100%,rgba(255,255,255,0.90)));
background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
background: -o-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(255,255,255,1) 25%,rgba(255,255,255,0.90) 100%);
@include breakpoint($netbook) { padding-left:15px; }
@include breakpoint($tablet) { padding-left:115px; }
@include breakpoint($letterbox) {
height: auto;
padding: 5px;
position: absolute;
top:0;
right:0;
border:none;
background: transparent;
.title { display:none; }
}
@include breakpoint(650px) {
padding-left:15px;
.button-back {
position: fixed;
top: 5px;
left: 14px;
min-height: 0;
height: 30px;
&:before {
left: -9px;
border-width: 15px 9px 15px 0;
}
}
}
}//header
.page-actions {
position:absolute;
top:20px;
right:40px;
z-index: 700;
font-size: 1em;
@include breakpoint($netbook) { right:15px; }
@include breakpoint(650px) {
position: fixed;
top: 5px;
right: 4px;
button {
min-height: 0;
height: 30px;
padding: 0.5em 1.37em;
}
}
.button-add {
position:relative;
padding-left:50px;
@include icon($i-add, 1.4em, rgba(255,255,255,0.6)) {
position: absolute;
top:0;
padding:9px 8px 0 0;
left:9px;
bottom:0;
width: 20px;
border-right: darken($green, 8%) 1px solid;
};
}
}
.content {
position: absolute;
top:0;
right:0;
left:0;
bottom:0;
padding:40px;
overflow: auto;
-webkit-overflow-scrolling: touch;
// Create placeholder the same height as the floating header
// to push content down by the same amount
&:before {
display: block;
content: "";
height: 77px; //30px + 17px title + 30px
@include breakpoint($letterbox) { display: none; }
}
&.no-padding {
padding: 0;
}
@include breakpoint($netbook) { padding-left:15px; }
@include breakpoint(550px) { padding: 0 15px 40px; }
}
.description-container, .bio-container {
max-width: 370px;
}
.word-count {
margin-right: 30px;
float: right;
font-weight: bold;
color: darken($brown, 5%);
}
}//.settings-content
}//.settings

View file

@ -1,245 +0,0 @@
/* =============================================================================
Users List
============================================================================= */
.settings {
.user-group-header {
margin-bottom: 0px;
padding-bottom: 20px;
border: 0 none;
border-bottom: 1px solid darken($lightbrown, 10%);
h3 {
display: inline-block;
margin: 0;
color: $midbrown;
font-weight: normal;
font-size: 1.1em;
line-height: 1em;
}
}
.user-search {
display: inline-block;
float: right;
label { margin: 0}
&:hover .user-search-input, .user-search-input:focus {
width: 260px;
padding: 0 10px;
}
.user-search-input {
@include box-sizing(border-box);
width: 0px;
padding: 0;
border: none;
border-bottom: lighten($lightbrown, 2%) 1px solid;
@include transition(width 0.2s ease-in-out);
box-shadow: none;
}
.search-icon {
@include icon($i-search, 1em, $midbrown);
}
}
.users {
padding: 0px;
margin-top: 0px;
list-style: none;
}
.user {
@include box-sizing(border-box);
display: block;
width: 100%;
padding: 20px;
border: 0 none;
border-top: 1px solid $lightgrey;
&:first-child {
border: none;
}
.user-image {
display: inline-block;
width: 40px;
height: 40px;
margin-right: 17px;
vertical-align: middle;
background-color: $lightbrown;
border-radius: 20px;
&.invite {
@include box-sizing(border-box);
padding-top: 8px;
text-align: center;
@include icon($i-mail, 1em, $brown);
}
img {
width: 40px;
height: 40px;
border-radius: 20px;
}
}
.user-meta {
display: inline-block;
vertical-align: middle;
}
.user-name {
margin: 0;
margin-top: 0.4em;
font-weight: 400;
font-size: 1.2em;
line-height: 1em;
}
.user-last-seen {
line-height: 1em;
}
}
.user-role {
padding: 2px 8px;
float: right;
font-size: 0.8em;
color: #fff;
text-transform: uppercase;
&.admin {
background-color: #DE523A;
}
&.editor {
background-color: #4A8CBD;
}
}
/* =============================================================================
User Profile
============================================================================= */
.user-profile-header {
position: relative;
// Gradient overlay
&:after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 110px;
@include linear-gradient( rgba(0,0,0,0), rgba(0,0,0,0.3) );
}
}
.cover-image {
display: block;
line-height: 0;
width: 100%;
height: auto;
min-height: 180px;
}
.edit-cover-image {
position: absolute;
right: 40px;
bottom: 38px;
background: rgba(0,0,0,0.3);
border-radius: 0;
color: rgba(255,255,255,0.8);
z-index: 2;
border-radius: $rounded;
@include transition(
color 0.3s ease,
background 0.3s ease
);
@include breakpoint($netbook) { right: 15px;}
&:hover {
color: #fff;
background: rgba(0,0,0,0.5);
}
}
.user-profile {
position: relative;
top: -100px;
z-index: 1;
fieldset {
padding: 0 40px;
}
}
fieldset.user-details-top {
margin-bottom: 0;
padding: 10px 0 0 0;
p {
color: #fff;
}
}
.user-image {
@include box-sizing(border-box);
display: block;
position: relative;
width: 120px;
height: 120px;
float: left;
margin-left: 40px;
margin-right: 20px;
text-align: center;
border-radius: 100%;
overflow: hidden;
border: 5px solid #fff;
background: #fff;
z-index: 2;
.img {
display: block;
width: 110px;
height: 110px;
background-size: cover;
background-position: center center;
border-radius: 100%;
}
&:hover {
.edit-user-image {
opacity: 1;
}
}
}
.edit-user-image {
@include position(absolute, 0px 0px 0px 0px);
border-radius: 100%;
background: rgba(0,0,0,0.5);
opacity: 0;
color: #fff;
line-height: 105px;
text-transform: uppercase;
text-decoration: none;
@include transition(opacity 0.3s ease);
}
#user-name {
border-color: #fff;
}
.user-details-bottom {
padding: 0 40px;
margin: -30px 0 0 0;
}
} //.settings

View file

@ -1,39 +0,0 @@
/*
* Specific styles for re-usable animations in Ghost admin.
*
* Table of Contents:
*
*
*/
/* =============================================================================
General
============================================================================= */
@-webkit-keyframes off-canvas {
0% { left:0; }
100% { left:300px; }
}
@-moz-keyframes off-canvas {
0% { opacity: 0; }
100% { opacity: 1; }
}
@-o-keyframes off-canvas {
0% { opacity: 0; }
100% { opacity: 1; }
}
@keyframes off-canvas {
0% { opacity: 0; }
100% { opacity: 1; }
}
@include keyframes(fadeIn) {
from {
opacity: 0;
}
to {
opacity: 1;
}
}

View file

@ -1,151 +0,0 @@
/*
* Breakpoint Sass 2.0.6
* Last updated: July 2013
* Copyright: Mason Wendell 2012 - MIT Licensed
* Source: https://github.com/canarymason/breakpoint
*/
//////////////////////////////
// Default Variables
//////////////////////////////
// Default Features
$breakpoint-default-media: all !default;
$breakpoint-default-feature: min-width !default;
$breakpoint-default-pair: width !default;
// Default Transforms
$breakpoint-force-media-all: false !default;
$breakpoint-to-ems: false !default;
$breakpoint-resolutions: true !default;
// Default No Query Options
$breakpoint-no-queries: false !default;
$breakpoint-no-query-fallbacks: false !default;
// Deftault Base Font Size
$breakpoint-base-font-size: 16px !default;
// Legacy Syntax Support
$breakpoint-legacy-syntax: false !default;
//////////////////////////////
// Imports
//////////////////////////////
@import 'breakpoint/context';
@import 'breakpoint/helpers';
@import 'breakpoint/parsers';
@import 'breakpoint/no-query';
@import 'breakpoint/respond-to';
//////////////////////////////
// Breakpoint Mixin
//////////////////////////////
@mixin breakpoint($query, $no-query: false) {
// Internal Variables
$query-string: '';
// Reset contexts
@include private-breakpoint-reset-contexts();
// Test to see if it's a comma-separated list
$or-list: is-breakpoint-list($query);
$query-fallback: false;
@if ($or-list != false and $breakpoint-legacy-syntax == false) {
$length: length($query);
$last: nth($query, $length);
$query-fallback: breakpoint-no-query($last);
@if ($query-fallback != false) {
$length: $length - 1;
}
@for $i from 1 through $length {
@if $i == 1 {
$query-string: breakpoint-parse(nth($query, $i));
}
@else {
$query-string: $query-string + ', ' + breakpoint-parse(nth($query, $i));
}
}
}
@else {
@if ($breakpoint-legacy-syntax == true) {
$length: length($query);
$last: nth($query, $length);
$query-fallback: breakpoint-no-query($last);
@if ($query-fallback != false) {
$length: $length - 1;
}
$mq: ();
@for $i from 1 through $length {
$mq: append($mq, nth($query, $i), comma);
}
$query-string: breakpoint-parse($mq);
}
@else {
$query-string: breakpoint-parse($query);
}
}
// Allow for an as-needed override or usage of no query fallback.
@if $no-query != false {
$query-fallback: $no-query;
}
// Print Out Query String
@if not $breakpoint-no-queries {
@media #{$query-string} {
@content;
}
}
@if $breakpoint-no-query-fallbacks != false {
$type: type-of($breakpoint-no-query-fallbacks);
$print: false;
@if ($type == 'bool') {
$print: true;
}
@else if ($type == 'string') {
@if $query-fallback == $breakpoint-no-query-fallbacks {
$print: true;
}
}
@else if ($type == 'list') {
@each $wrapper in $breakpoint-no-query-fallbacks {
@if $query-fallback == $wrapper {
$print: true;
}
}
}
// Write Fallback
@if ($query-fallback != false) and ($print == true) {
$type-fallback: type-of($query-fallback);
@if ($type-fallback != 'bool') {
#{$query-fallback} & {
@content;
}
}
@else {
@content;
}
}
}
@include private-breakpoint-reset-contexts();
}

View file

@ -1,133 +0,0 @@
//////////////////////////////
// Private Breakpoint Variables
//////////////////////////////
$private-breakpoint-context-holder: ();
$private-breakpoint-context-placeholder: 0;
//////////////////////////////
// Breakpoint Has Context
// Returns whether or not you are inside a Breakpoint query
//////////////////////////////
@function breakpoint-has-context() {
@if length($private-breakpoint-context-placeholder) {
@return true;
}
@else {
@return false;
}
}
//////////////////////////////
// Breakpoint Get Context
// $feature: Input feature to get it's current MQ context. Returns false if no context
//////////////////////////////
@function breakpoint-get-context($feature) {
@each $context in $private-breakpoint-context-holder {
@if $feature == nth($context, 1) {
// strip feature name
$values: ();
@for $i from 2 through length($context) {
$values: append($values, nth($context, $i), comma);
}
$length: length($values) + 1;
@for $i from $length through $private-breakpoint-context-placeholder {
// Apply the Default Media type if feature is media
@if $feature == 'media' {
$values: append($values, $breakpoint-default-media, comma);
}
@else {
$values: append($values, false, comma);
}
}
@return $values;
}
}
@return false;
}
//////////////////////////////
// Private function to set context
//////////////////////////////
@function private-breakpoint-set-context($feature, $value) {
@if $value == 'monochrome' {
$feature: 'monochrome';
}
$placeholder-plus-one: ($private-breakpoint-context-placeholder + 1);
$holder: ();
@if $private-breakpoint-context-placeholder == 1 {
$holder: ($feature $value);
$private-breakpoint-context-holder: append($private-breakpoint-context-holder, $holder, comma);
@return true;
} @else {
$feature-used: false;
@each $context in $private-breakpoint-context-holder {
@if nth($context, 1) == $feature {
$feature-used: $context;
}
}
@if $feature-used != false {
$holder: $feature;
@for $i from 2 through $placeholder-plus-one {
@if $i <= length($feature-used) {
$holder: append($holder, nth($feature-used, $i), space);
} @elseif $i < $placeholder-plus-one {
$holder: append($holder, false, space);
} @else {
$holder: append($holder, $value, space);
}
}
}
@elseif $feature-used == false {
$holder: $feature;
@for $i from 2 through $placeholder-plus-one {
@if $i < $placeholder-plus-one {
// Apply the Default Media type if feature is media
@if $feature == 'media' {
$holder: append($holder, $breakpoint-default-media, space);
}
@else {
$holder: append($holder, false, space);
}
} @else {
$holder: append($holder, $value, space);
}
}
}
// Rebuild context
$rebuild: ();
@if $feature-used != false {
@each $context in $private-breakpoint-context-holder {
@if nth($context, 1) == nth($holder, 1) {
$rebuild: append($rebuild, $holder, comma);
} @else {
$rebuild: append($rebuild, $context, comma);
}
}
} @else {
$rebuild: append($private-breakpoint-context-holder, $holder, comma);
}
$private-breakpoint-context-holder: $rebuild;
}
@return true;
}
//////////////////////////////
// Private function to reset context
//////////////////////////////
@mixin private-breakpoint-reset-contexts {
$private-breakpoint-context-holder: ();
$private-breakpoint-context-placeholder: 0;
}

View file

@ -1,151 +0,0 @@
//////////////////////////////
// Converts the input value to Base EMs
//////////////////////////////
@function breakpoint-to-base-em($value) {
$value-unit: unit($value);
// Will convert relative EMs into root EMs.
@if $breakpoint-base-font-size and type-of($breakpoint-base-font-size) == 'number' and $value-unit == 'em' {
$base-unit: unit($breakpoint-base-font-size);
@if $base-unit == 'px' or $base-unit == '%' or $base-unit == 'em' or $base-unit == 'pt' {
@return base-conversion($value) / base-conversion($breakpoint-base-font-size) * 1em;
}
@else {
@warn '#{$breakpoint-base-font-size} is not set in valid units for font size!';
@return false;
}
}
@else {
@return base-conversion($value);
}
}
@function base-conversion($value) {
$unit: unit($value);
@if $unit == 'px' {
@return $value / 16px * 1em;
}
@else if $unit == '%' {
@return $value / 100% * 1em;
}
@else if $unit == 'em' {
@return $value;
}
@else if $unit == 'pt' {
@return $value / 12pt * 1em;
}
@else {
@return $value;
// @warn 'Everything is terrible! What have you done?!';
}
}
//////////////////////////////
// Returns whether the feature can have a min/max pair
//////////////////////////////
$breakpoint-min-max-features: 'color',
'color-index',
'aspect-ratio',
'device-aspect-ratio',
'device-height',
'device-width',
'height',
'monochrome',
'resolution',
'width';
@function breakpoint-min-max($feature) {
@each $item in $breakpoint-min-max-features {
@if $feature == $item {
@return true;
}
}
@return false;
}
//////////////////////////////
// Returns whether the feature can have a string value
//////////////////////////////
$breakpoint-string-features: 'orientation',
'scan',
'color',
'aspect-ratio',
'device-aspect-ratio',
'pointer',
'luminosity';
@function breakpoint-string-value($feature) {
@each $item in $breakpoint-string-features {
@if breakpoint-min-max($item) {
@if $feature == 'min-#{$item}' or $feature == 'max-#{$item}' {
@return true;
}
}
@else if $feature == $item {
@return true;
}
}
@return false;
}
//////////////////////////////
// Returns whether the feature is a media type
//////////////////////////////
$breakpoint-media-types: 'all',
'braille',
'embossed',
'handheld',
'print',
'projection',
'screen',
'speech',
'tty',
'tv';
@function breakpoint-is-media($feature) {
@each $media in $breakpoint-media-types {
@if ($feature == $media) or ($feature == 'not #{$media}') or ($feature == 'only #{$media}') {
@return true;
}
}
@return false;
}
//////////////////////////////
// Returns whether the feature can stand alone
//////////////////////////////
$breakpoint-single-string-features: 'color',
'color-index',
'grid',
'monochrome';
@function breakpoint-single-string($feature) {
@each $item in $breakpoint-single-string-features {
@if $feature == $item {
@return true;
}
}
@return false;
}
//////////////////////////////
// Returns whether the feature
//////////////////////////////
@function breakpoint-is-resolution($feature) {
$resolutions: 'device-pixel-ratio', 'dpr';
@if $breakpoint-resolutions {
$resolutions: append($resolutions, 'resolution');
}
@each $reso in $resolutions {
@if index($feature, $reso) or index($feature, 'min-#{$reso}') or index($feature, 'max-#{$reso}') {
@return true;
}
}
@return false;
}

View file

@ -1,15 +0,0 @@
@function breakpoint-no-query($query) {
@if type-of($query) == 'list' {
$keyword: nth($query, 1);
@if type-of($keyword) == 'string' and ($keyword == 'no-query' or $keyword == 'no query' or $keyword == 'fallback') {
@return nth($query, 2);
}
@else {
@return false;
}
}
@else {
@return false;
}
}

View file

@ -1,104 +0,0 @@
//////////////////////////////
// Import Parser Pieces
//////////////////////////////
@import "parsers/query";
@import "parsers/single";
@import "parsers/double";
@import "parsers/triple";
@import "parsers/resolution";
//////////////////////////////
// General Breakpoint Parser
//////////////////////////////
@function breakpoint-parse($query) {
$private-breakpoint-context-placeholder: $private-breakpoint-context-placeholder + 1;
// Set up Media Type
$query-print: '';
$force-all: (($breakpoint-force-media-all == true) and ($breakpoint-default-media == 'all'));
$empty-media: true;
@if ($force-all == true) or ($breakpoint-default-media != 'all') {
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
$query-print: $breakpoint-default-media;
$empty-media: false;
}
$query-resolution: false;
$query-holder: breakpoint-parse-query($query);
// Loop over each parsed out query and write it to $query-print
$first: true;
@each $feature in $query-holder {
$length: length($feature);
// Parse a single feature
@if ($length == 1) {
// Feature is currenty a list, grab the actual value
$feature: nth($feature, 1);
// Media Type must by convention be the first item, so it's safe to flat override $query-print, which right now should only be the default media type
@if (breakpoint-is-media($feature)) {
@if ($force-all == true) or ($feature != 'all') {
// Force the print of the default media type if (force all is true and default media type is all) or (default media type is not all)
$query-print: $feature;
$empty-media: false;
// Set Context
$context-setter: private-breakpoint-set-context(media, $query-print);
}
}
@else {
$parsed: breakpoint-parse-single($feature, $empty-media, $first);
$query-print: '#{$query-print} #{$parsed}';
$first: false;
}
}
// Parse a double feature
@else if ($length == 2) {
@if (breakpoint-is-resolution($feature) != false) {
$query-resolution: $feature;
}
@else {
$parsed: null;
// If it's a string/number pair,
// we check to see if one is a single-string value,
// then we parse it as a normal double
$alpha: nth($feature, 1);
$beta: nth($feature, 2);
@if breakpoint-single-string($alpha) or breakpoint-single-string($beta) {
$parsed: breakpoint-parse-single($alpha, $empty-media, $first);
$query-print: '#{$query-print} #{$parsed}';
$first: false;
$parsed: breakpoint-parse-single($beta, $empty-media, $first);
$query-print: '#{$query-print} #{$parsed}';
}
@else {
$parsed: breakpoint-parse-double($feature, $empty-media, $first);
$query-print: '#{$query-print} #{$parsed}';
$first: false;
}
}
}
// Parse a triple feature
@else if ($length == 3) {
$parsed: breakpoint-parse-triple($feature, $empty-media, $first);
$query-print: '#{$query-print} #{$parsed}';
$first: false;
}
}
@if ($query-resolution != false) {
$query-print: breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first);
}
// @return 'all';
@return $query-print;
}

View file

@ -1,55 +0,0 @@
////////////////////////
// Default the Breakpoints variable
////////////////////////
$breakpoints: () !default;
////////////////////////
// Respond-to API Mixin
////////////////////////
@mixin respond-to($context, $no-query: false) {
@if type-of($breakpoints) != 'list' {
// Just in case someone writes gibberish to the $breakpoints variable.
@warn "Your breakpoints aren't a list! See https://github.com/snugug/respond-to#api if you'd like a reminder on how to use Respond-to";
}
@if length($breakpoints) != 0 {
// If there's only one breakpoint, SASS will think it's a space separated list :P
@if length($breakpoints) == 2 and type-of(nth($breakpoints, 1)) != 'list' {
$breakpoints: append((), (nth($breakpoints, 1), nth($breakpoints, 2)));
}
@each $bkpt in $breakpoints {
@if $context == nth($bkpt, 1) {
$length: length($bkpt);
$mq: false !default;
@for $i from 2 through $length {
// If it's the first item, override $mq
@if $i == 2 {
$mq: nth($bkpt, $i);
}
// Else, join $mq
@else {
$mq: join($mq, nth($bkpt, $i));
}
}
@include breakpoint($mq, $no-query) {
@content;
}
}
}
}
@else {
@warn "You haven't created any breakpoints yet! Make some already! See https://github.com/snugug/respond-to#api if you'd like a reminder on how to use Respond-to";
@content;
}
}
//////////////////////////////
// Add Breakpoint to Breakpoints
//////////////////////////////
@function add-breakpoint($name, $bkpt) {
$bkpt: $name $bkpt;
$output: append($breakpoints, $bkpt, 'comma');
@return $output;
}

View file

@ -1,33 +0,0 @@
//////////////////////////////
// Import Pieces
//////////////////////////////
@import "double/default-pair";
@import "double/double-string";
@import "double/default";
@function breakpoint-parse-double($feature, $empty-media, $first) {
$parsed: '';
$leader: '';
// If we're forcing
@if not ($empty-media) or not ($first) {
$leader: 'and ';
}
$first: nth($feature, 1);
$second: nth($feature, 2);
// If we've got two numbers, we know we need to use the default pair because there are no media queries that has a media feature that is a number
@if type-of($first) == 'number' and type-of($second) == 'number' {
$parsed: breakpoint-parse-default-pair($first, $second);
}
// If they are both strings, we send it through the string parser
@else if type-of($first) == 'string' and type-of($second) == 'string' {
$parsed: breakpoint-parse-double-string($first, $second);
}
// If it's a string/number pair, we parse it as a normal double
@else {
$parsed: breakpoint-parse-double-default($first, $second);
}
@return $leader + $parsed;
}

View file

@ -1,75 +0,0 @@
@function breakpoint-parse-query($query) {
// Parse features out of an individual query
$feature-holder: ();
$query-holder: ();
$length: length($query);
@if $length == 2 {
// If we've got a string/number, number/string, check to see if it's a valid string/number pair or two singles
@if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'number') or (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'string') {
$number: '';
$value: '';
@if type-of(nth($query, 1)) == 'string' {
$number: nth($query, 2);
$value: nth($query, 1);
}
@else {
$number: nth($query, 1);
$value: nth($query, 2);
}
// If the string value can be a single value, check to see if the number passed in is a valid input for said single value. Fortunately, all current single-value options only accept unitless numbers, so this check is easy.
@if breakpoint-single-string($value) {
@if unitless($number) {
$feature-holder: append($value, $number, space);
$query-holder: append($query-holder, $feature-holder, comma);
@return $query-holder;
}
}
// If the string is a media type, split the query
@if breakpoint-is-media($value) {
$query-holder: append($query-holder, nth($query, 1));
$query-holder: append($query-holder, nth($query, 2));
@return $query-holder;
}
// If it's not a single feature, we're just going to assume it's a proper string/value pair, and roll with it.
@else {
$feature-holder: append($value, $number, space);
$query-holder: append($query-holder, $feature-holder, comma);
@return $query-holder;
}
}
// If they're both numbers, we assume it's a double and roll with that
@else if (type-of(nth($query, 1)) == 'number' and type-of(nth($query, 2)) == 'number') {
$feature-holder: append(nth($query, 1), nth($query, 2), space);
$query-holder: append($query-holder, $feature-holder, comma);
@return $query-holder;
}
// If they're both strings and neither are singles, we roll with that.
@else if (type-of(nth($query, 1)) == 'string' and type-of(nth($query, 2)) == 'string') {
@if not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) {
$feature-holder: append(nth($query, 1), nth($query, 2), space);
$query-holder: append($query-holder, $feature-holder, comma);
@return $query-holder;
}
}
}
@else if $length == 3 {
// If we've got three items and none is a list, we check to see
@if type-of(nth($query, 1)) != 'list' and type-of(nth($query, 2)) != 'list' and type-of(nth($query, 3)) != 'list' {
// If none of the items are single string values and none of the values are media values, we're good.
@if (not breakpoint-single-string(nth($query, 1)) and not breakpoint-single-string(nth($query, 2)) and not breakpoint-single-string(nth($query, 3))) and ((not breakpoint-is-media(nth($query, 1)) and not breakpoint-is-media(nth($query, 2)) and not breakpoint-is-media(nth($query, 3)))) {
$feature-holder: append(nth($query, 1), nth($query, 2), space);
$feature-holder: append($feature-holder, nth($query, 3), space);
$query-holder: append($query-holder, $feature-holder, comma);
@return $query-holder;
}
}
}
// If it's a single item, or if it's not a special case double or tripple, we can simply return the query.
@return $query;
}

View file

@ -1,31 +0,0 @@
@import "resolution/resolution";
@function breakpoint-build-resolution($query-print, $query-resolution, $empty-media, $first) {
$leader: '';
// If we're forcing
@if not ($empty-media) or not ($first) {
$leader: 'and ';
}
@if $breakpoint-resolutions and $query-resolution {
$resolutions: breakpoint-make-resolutions($query-resolution);
$length: length($resolutions);
$query-holder: '';
@for $i from 1 through $length {
$query: '#{$query-print} #{$leader}#{nth($resolutions, $i)}';
@if $i == 1 {
$query-holder: $query;
}
@else {
$query-holder: '#{$query-holder}, #{$query}';
}
}
@return $query-holder;
}
@else {
// Return with attached resolution
@return $query-print;
}
}

View file

@ -1,26 +0,0 @@
//////////////////////////////
// Import Pieces
//////////////////////////////
@import "single/default";
@function breakpoint-parse-single($feature, $empty-media, $first) {
$parsed: '';
$leader: '';
// If we're forcing
@if not ($empty-media) or not ($first) {
$leader: 'and ';
}
// If it's a single feature that can stand alone, we let it
@if (breakpoint-single-string($feature)) {
$parsed: $feature;
// Set Context
$context-setter: private-breakpoint-set-context($feature, $feature);
}
// If it's not a stand alone feature, we pass it off to the default handler.
@else {
$parsed: breakpoint-parse-default($feature);
}
@return $leader + '(' + $parsed + ')';
}

View file

@ -1,36 +0,0 @@
//////////////////////////////
// Import Pieces
//////////////////////////////
@import "triple/default";
@function breakpoint-parse-triple($feature, $empty-media, $first) {
$parsed: '';
$leader: '';
// If we're forcing
@if not ($empty-media) or not ($first) {
$leader: 'and ';
}
// separate the string features from the value numbers
$string: null;
$numbers: null;
@each $val in $feature {
@if type-of($val) == string {
$string: $val;
}
@else {
@if type-of($numbers) == 'null' {
$numbers: $val;
}
@else {
$numbers: append($numbers, $val);
}
}
}
$parsed: breakpoint-parse-triple-default($string, nth($numbers, 1), nth($numbers, 2));
@return $leader + $parsed;
}

View file

@ -1,21 +0,0 @@
@function breakpoint-parse-default-pair($first, $second) {
$default: $breakpoint-default-pair;
$min: '';
$max: '';
// Sort into min and max
$min: min($first, $second);
$max: max($first, $second);
// Set Context
$context-setter: private-breakpoint-set-context(min-#{$default}, $min);
$context-setter: private-breakpoint-set-context(max-#{$default}, $max);
// Make them EMs if need be
@if ($breakpoint-to-ems == true) {
$min: breakpoint-to-base-em($min);
$max: breakpoint-to-base-em($max);
}
@return '(min-#{$default}: #{$min}) and (max-#{$default}: #{$max})';
}

View file

@ -1,22 +0,0 @@
@function breakpoint-parse-double-default($first, $second) {
$feature: '';
$value: '';
@if type-of($first) == 'string' {
$feature: $first;
$value: $second;
}
@else {
$feature: $second;
$value: $first;
}
// Set Context
$context-setter: private-breakpoint-set-context($feature, $value);
@if ($breakpoint-to-ems == true) {
$value: breakpoint-to-base-em($value);
}
@return '(#{$feature}: #{$value})'
}

View file

@ -1,19 +0,0 @@
@function breakpoint-parse-double-string($first, $second) {
$feature: '';
$value: '';
// Test to see which is the feature and which is the value
@if (breakpoint-string-value($first) == true) {
$feature: $first;
$value: $second;
}
@else {
$feature: $second;
$value: $first;
}
// Set Context
$context-setter: private-breakpoint-set-context($feature, $value);
@return '(#{$feature}: #{$value})';
}

View file

@ -1,60 +0,0 @@
@function breakpoint-make-resolutions($resolution) {
$length: length($resolution);
$output: ();
@if $length == 2 {
$feature: '';
$value: '';
// Find which is number
@if type-of(nth($resolution, 1)) == 'number' {
$value: nth($resolution, 1);
}
@else {
$value: nth($resolution, 2);
}
// Determine min/max/standard
@if index($resolution, 'min-resolution') {
$feature: 'min-';
}
@else if index($resolution, 'max-resolution') {
$feature: 'max-';
}
$standard: '(#{$feature}resolution: #{$value})';
// If we're not dealing with dppx,
@if unit($value) != 'dppx' {
$base: 96dpi;
@if unit($value) == 'dpcm' {
$base: 243.84dpcm;
}
// Write out feature tests
$webkit: '';
$moz: '';
$webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / $base})';
$moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / $base})';
// Append to output
$output: append($output, $standard, space);
$output: append($output, $webkit, space);
$output: append($output, $moz, space);
}
@else {
$webkit: '';
$moz: '';
$webkit: '(-webkit-#{$feature}device-pixel-ratio: #{$value / 1dppx})';
$moz: '(#{$feature}-moz-device-pixel-ratio: #{$value / 1dppx})';
$fallback: '(#{$feature}resolution: #{$value / 1dppx * 96dpi})';
// Append to output
$output: append($output, $standard, space);
$output: append($output, $webkit, space);
$output: append($output, $moz, space);
$output: append($output, $fallback, space);
}
}
@return $output;
}

View file

@ -1,13 +0,0 @@
@function breakpoint-parse-default($feature) {
$default: $breakpoint-default-feature;
// Set Context
$context-setter: private-breakpoint-set-context($default, $feature);
@if ($breakpoint-to-ems == true) and (type-of($feature) == 'number') {
@return '#{$default}: #{breakpoint-to-base-em($feature)}';
}
@else {
@return '#{$default}: #{$feature}';
}
}

View file

@ -1,18 +0,0 @@
@function breakpoint-parse-triple-default($feature, $first, $second) {
// Sort into min and max
$min: min($first, $second);
$max: max($first, $second);
// Set Context
$context-setter: private-breakpoint-set-context(min-#{$feature}, $min);
$context-setter: private-breakpoint-set-context(max-#{$feature}, $max);
// Make them EMs if need be
@if ($breakpoint-to-ems == true) {
$min: breakpoint-to-base-em($min);
$max: breakpoint-to-base-em($max);
}
@return '(min-#{$feature}: #{$min}) and (max-#{$feature}: #{$max})';
}

View file

@ -1,490 +0,0 @@
/*
* These are the global generic form styles used throughout the Ghost admin,
* but mainly in the settings pages. Don't fuck with them.
*
* Table of Contents:
*
* General
* Checkboxes
* Buttons
* Split Buttons
*
*/
/* =============================================================================
General
============================================================================= */
%label {
display: inline-block;
position: absolute;
top: 0.5em;
left: 0;
width: 120px;
font-weight: bold;
color: $brown;
text-align: right;
@include breakpoint(550px) {
display: block;
position: relative;
top: auto;
left: auto;
width: auto;
margin-bottom: 5px;
text-align: left;
}
}
form {
label,
.label {
@extend %label;
}
p {
max-width: 400px;
color: darken($brown, 5%);
font-size: 1em;
margin: 0;
}
}//form
fieldset {
border: none;
margin: 0 0 3em 0;
padding: 0;
}
legend {
display: block;
width: 100%;
margin: 2em 0;
border-bottom:$lightbrown 1px solid;
font-size: 1.2em;
line-height: 2.0em;
color: $brown;
}
input, textarea, select {
@include box-sizing(border-box);
width: 276px;
padding: 5px 7px;
margin: 0;
outline: 0;
font-size: 1.1em;
line-height: 1.4em;
background: #fff;
border: darken($lightbrown, 5%) 1px solid;
border-radius: $rounded;
@include transition(all 0.15s ease-in-out);
@include breakpoint(550px) {
width: 100%;
}
}
textarea {
width: 100%;
max-width: 340px;
min-width: 250px;
height: auto;
min-height: 6.5em;
}
input, select, textarea {
margin-bottom: 5px;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="week"]:focus,
input[type="time"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
textarea:focus {
border: $brown 1px solid;
background: #fff;
outline: none;
outline-width: 0;
}
select {
@include box-sizing(border-box);
width: 270px;
height: 30px;
line-height: 30px;
@include breakpoint(550px) {
width: 100%;
}
}
// 'vanilla' CSS hack to specifically target Firefox
@-moz-document url-prefix() {
select {
height: auto;
}
}
.form-group {
position: relative;
margin: 1.5em 0;
padding-left: 140px;
@include breakpoint(550px) { padding-left: 0; }
}
/* =============================================================================
Checkboxes
============================================================================= */
// Hide the default checkbox
input[type="checkbox"] {
display: none;
}
// Turn the label element into a fake checkbox
.checkbox {
@include box-sizing(border-box);
position: relative;
top: auto;
margin-top: 0.5em;
display: inline-block;
width: 18px;
height: 18px;
cursor: pointer;
border-radius: $rounded;
background: lighten($lightbrown, 5%);
border: darken($lightbrown, 5%) 1px solid;
@include transition(all 0.2s ease);
// Create a checkmark, hidden by default
&:after {
opacity: 0;
content: "";
position: absolute;
width: 7px;
height: 3px;
top: 5px;
left: 4px;
border: 3px solid #fff;
border-top: none;
border-right: none;
@include transform(rotate(-45deg));
@include transition(all 0.2s ease);
}
}
// If the checkbox is checked, show the the :after element
input[type=checkbox]:checked + .checkbox { background: $green; border: lighten($green, 10%); }
input[type=checkbox]:checked + .checkbox:after { opacity: 1; }
/* =============================================================================
Buttons
============================================================================= */
/*
* Buttons are used for primary calls to action on a page.
*
* Usage:
* <button type="button" class="button">Default</button>
*/
// This base style is used on all buttons
%button {
@include box-sizing(border-box);
min-height: 35px;
width: auto;
display: inline-block;
padding: 0.9em 1.37em;
cursor: pointer;
text-decoration: none;
color: #fff;
font-size: 11px; // Hack because Firefox sucks ass.
line-height: 13px; // Hack because Firefox sucks ass.
font-weight: 300;
text-align: center;
letter-spacing: 1px;
text-transform: uppercase;
text-shadow: none;
border-radius: 0.2em;
border: rgba(0,0,0,0.05) 0.1em solid;
@include transition(background 0.3s ease, border-color 0.3s ease);
&:hover {
border-color: transparent;
background: #f8f8f8;
text-decoration: none;
}
&:active {
box-shadow: rgba(0,0,0,0.3) 0 1px 3px inset;
}
&:disabled {
opacity: 0.5;
cursor: not-allowed;
}
&.large {
padding: 1em 1.8em;
font-size: 14px;
line-height: 16px;
}
}
// This is the default button style
.button,
button,
input[type="button"] {
@extend %button;
color:#777;
font-weight: normal;
background: #eee;
box-shadow: none;
&:hover {
border-color: rgba(0,0,0,0.1);
}
}
// Button for save/next/continue/confirm actions
.button-save,
button[type="submit"],
input[type="submit"] {
@extend %button;
background: $blue;
box-shadow: none;
&:hover {background: darken($blue, 10%);}
}
// Button for actions which add stuff
.button-add {
@extend %button;
background: $green;
&:hover {background: darken($green, 8%);}
}
// Button for deleting/removing stuff
.button-delete,
button[type="reset"],
input[type="reset"] {
@extend %button;
background: $red;
box-shadow: none;
&:hover {background: darken($red, 10%);}
}
// Alternative button with more visual attention, but no extra semantic meaning
.button-alt {
@extend %button;
background: lighten($darkgrey, 10%);
&:hover {background: $darkgrey;}
}
// This applies normal link styles to de-emphasise a button
.button-link {
@extend %button;
color: $blue;
background: transparent;
border: none;
&:hover {
background: transparent;
text-decoration: underline;
}
}
// Back button for pane animations
.button-back {
@extend %button;
position: absolute;
top: 20px;
left: 20px;
margin-right: 30px;
padding: 0.5em 1.37em 0.5em 1.10em;
display: none;
color: #fff;
background: $blue;
border: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&:before {
content: ' ';
position: absolute;
top: 0;
left: -10px;
width: 0;
height: 0;
border-width: 18px 10px 18px 0;
border-color: transparent $blue transparent transparent;
border-style: solid solid solid none;
@include transform(scale(0.9999));
@include transition(border-color 0.3s ease);
}
&:hover {
color: #fff;
background: darken($blue, 10%);
border-color: darken($blue, 10%);
&:before {
border-right-color: darken($blue, 10%);
}
}
@include breakpoint($tablet) {
display: inline-block;
}
}
/* =============================================================================
Split Buttons
============================================================================= */
/*
* The splitbutton adds addition values to a button, via a dropdown (or drop-up).
*
* Usage:
* <section class="splitbutton">
* <button type="button" class="button">Split Up</button>
* <a class="options" href="#"><span class="hidden">Options</span></a>
* </section>
*/
// These are the base styles applied to all splitbuttons
%splitbutton {
display: inline-block;
position: relative;
font-size: 0; // hack to stop space after button
white-space: nowrap;
button {
font-size: 11px; // hack to restore font size
@include border-right-radius(0);
}
// This is the additional dropdown arrow, to the right of the button.
.options {
display: inline-block;
position:relative;
width: 35px;
height: 35px;
margin-left: -1px;
vertical-align: top;
text-align: center;
color: #fff;
background: #e5e5e5;
border-radius: 0 2px 2px 0;
box-shadow:
rgba(0,0,0,0.02) 0 1px 0 inset,
rgba(0,0,0,0.02) -1px 0 0 inset,
rgba(0,0,0,0.02) 0 -1px 0 inset;
@include icon($i-chevron-down, 9px) {
position: absolute;
top: 50%;
right: 50%;
margin-top: -3px;
margin-right: -5px;
@include transition(margin-top 0.3s ease);
/* Transition of transform properties are split out due to a
defect in the vendor prefixing of transform transitions.
See: http://github.com/thoughtbot/bourbon/pull/86 */
@include transition-property(transform);
@include transition-duration(0.3);
@include transition-timing-function(ease);
};
@include transition(background-color 0.3s linear);
// Keep the arrow spun when the associated menu is open
&.active:before {
@include transform(rotate(360deg));
}
&.up.active:before {
margin-top:-4px;
@include transform(rotate(540deg));
}
// Spin the arrow on hover and while menu is open
&:hover {
box-shadow: none;
background: #f8f8f8;
@include icon($i-chevron-down) {
@include transform(rotate(360deg));
};
}
// If it has a class of "up" spin it an extra 180degress to point up
&.up:hover {
@include icon($i-chevron-down) {
margin-top:-4px;
@include transform(rotate(540deg));
@include transition-property(transform);
@include transition-duration(0.6);
@include transition-timing-function(ease);
};
}
}
}
// The default splitbutton
.splitbutton {
@extend %splitbutton;
.options {
color:#777;
&:hover {
box-shadow:
rgba(0,0,0,0.07) 0 1px 0 inset,
rgba(0,0,0,0.07) -1px 0 0 inset,
rgba(0,0,0,0.07) 0 -1px 0 inset;
}
}
}
// For save/next/continue/confirm actions
.splitbutton-save {
@extend %splitbutton;
.options {
background: darken($blue, 5%);
&:hover, &.active {background: darken($blue, 10%);}
}
}
// For actions which add something
.splitbutton-add {
@extend %splitbutton;
.options {
background: darken($green, 6%);
&:hover {background: darken($green, 8%);}
}
}
// For actions which delete something
.splitbutton-delete {
@extend %splitbutton;
.options {
background: darken($red, 6%);
&:hover {background: darken($red, 10%);}
}
}
// Alternative style with more visual attention, but no extra semantic meaning
.splitbutton-alt {
@extend %splitbutton;
.options {
background: lighten($darkgrey, 4%);
&:hover {background: $darkgrey;}
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,212 +0,0 @@
/*
* The icons used in Ghost are the Pictos set by Drew Wilson - http://pictos.cc
* They are embedded via a custom icon font built with http://icomoon.io
*
* Table of Contents:
*
* Font Face
* Icon Element
* Icon Variables / Short Names
* Usage Docs
*/
/* =============================================================================
The Font Face
============================================================================= */
// Generated by icomoon.co
@font-face {
font-family: 'Icons';
src:url('../fonts/icons.eot');
src:url('../fonts/icons.eot?#iefix') format('embedded-opentype'),
url('../fonts/icons.woff') format('woff'),
url('../fonts/icons.ttf') format('truetype'),
url('../fonts/icons.svg#icons') format('svg');
font-weight: normal;
font-style: normal;
}
/* =============================================================================
The Icon Element
============================================================================= */
@mixin icon($char, $size: '', $color: '') {
&:before {
// Base
font-family: "Icons";
font-weight: normal;
font-style: normal;
vertical-align: -7%;
text-transform:none;
speak: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
//Function
content: '#{$char}';
@if $size != '' {
font-size: $size;
}
@if $color != '' {
color: $color;
}
@content;
}
&:hover {
text-decoration:none;
}
}
/*
* Special use case for when we want to add an icon after an element rather
* than before it. For things like dropdowns.
*/
@mixin icon-after($char, $size: '', $color: '') {
&:after {
// Base
font-family: "Icons";
font-weight: normal;
font-style: normal;
vertical-align: -7%;
text-transform:none;
speak: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
// Function
content: '#{$char}';
@if $size != '' {
font-size: $size;
}
@if $color != '' {
color: $color;
}
@content;
}
&:hover {
text-decoration:none;
}
}
/* =============================================================================
Icon Variables / Short Names
============================================================================= */
/*
* For accessibility, icon characters in the icon font are stored in Unicode's
* Private Use Area characters. This means that screen readers won't attempt to
* read them out loud. For code maintainability, we then store these Unicode
* references inside Sass variables.
*/
// Placeholder
$i: \e018;
// Icons
$i-ghost: \e000;
$i-chevron-down: \e001;
$i-users: \e002;
$i-tag: \e003;
$i-tablet: \e004;
$i-menu: \e005;
$i-settings: \e006;
$i-search: \e007;
$i-search-left: \e008;
$i-rss: \e009;
$i-preview: \e00a;
$i-plugins: \e00b;
$i-pin: \e00c;
$i-pc: \e00d;
$i-pacman: \e00e;
$i-edit: \e00f;
$i-mobile: \e010;
$i-image: \e011;
$i-mail: \e012;
$i-list: \e013;
$i-info: \e014;
$i-home: \e015;
$i-grid: \e016;
$i-fullscreen: \e017;
$i-question: \e018;
$i-external: \e019;
$i-error: \e01a;
$i-comments: \e01b;
$i-close: \e01c;
$i-chevron: \e01d;
$i-calendar: \e01e;
$i-archive: \e01f;
$i-services: \e020;
$i-appearance: \e021;
$i-video: \e022;
$i-trash: \e023;
$i-reply: \e024;
$i-stats: \e025;
$i-featured: \e026;
$i-unfeatured: \e027;
$i-clock: \e028;
$i-settings2: \e029;
$i-camera: \e02a;
$i-power: \e02b;
$i-lock: \e02c;
$i-content: \e02d;
$i-user: \e02e;
$i-support: \e02f;
$i-success: \e030;
$i-notification: \e031;
$i-add: \e032;
$i-check: \e033;
$i-x: \e034;
$i-link: \e035;
$i-camera: \e036;
$i-repost: \e037;
$i-weather-rain: \e038;
$i-weather-sun: \e039;
$i-weather-partial: \e03a;
$i-weather-snow: \e03b;
$i-weather-cloudy: \e03c;
$i-lightning: \e03d;
/* =============================================================================
Usage
=============================================================================
To create a button with a label that is prefixed with a camera icon, we might
write our Sass something like this:
#button {
display: block;
width: 200px;
height: 40px;
@include icon($i-camera, 16px, #fff) {vertical-align:-10%;};
}
This would then output full CSS something like this:
#button {
display: block;
width: 200px;
height: 40px;
}
#button:before {
content: "\e02a";
size: 16px;
color: #fff;
font-family: "Icons";
font-weight: normal;
font-style: normal;
vertical-align: -10%;
text-transform:none;
speak: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
}
*/

View file

@ -1,198 +0,0 @@
/*
* These are Sass variables used to make our CSS more dynamic by re-using
* common property values throughout our styles. Don't overdo it.
*
* Table of Contents:
*
* Bourbon
* Breakpoint
* Typography
* Colors
* Gradients
* Global Styles
*
*/
/* =============================================================================
Bourbon
============================================================================= */
// Bourbon - http://bourbon.io/
@import "bourbon/_bourbon";
$rounded: 2px;
$shadow: rgba(0,0,0,0.05) 0 1px 5px;
$default-transition-duration: 0.3s;
/* =============================================================================
Breakpoint
============================================================================= */
// Breakpoint - http://breakpoint-sass.com/
@import "breakpoint";
$breakpoint-default-feature: max-width;
// Max widths
$netbook: 1000px;
$tablet: 800px;
$mobile: 400px;
// Min widths
$biggerthan-widescreen: min-width 1500px, min-width 1500px;
$biggerthan-netbook: min-width 1000px, min-width 1000px;
$biggerthan-tablet: min-width 800px, min-width 800px;
$biggerthan-mobile: min-width 401px, min-width 401px;
// Heights
$letterbox: max-height 600px, max-height 600px;
// Pixel Densities
$retina: 2 device-pixel-ratio;
/* =============================================================================
Typography
============================================================================= */
$font-family: 'Open Sans', sans-serif;
$font-family-serif: serif;
$font-family-mono: Inconsolata, monospace;
@mixin baseline {
margin: 1.6em 0;
}
//Does this really need to be a mixin?
@mixin hidden {
text-indent: -9999px;
visibility: hidden;
display: none;
}
/* =============================================================================
Colors
============================================================================= */
$darkgrey: #242628;
$grey: #35393b;
$midgrey: #7d878a;
$lightgrey: #e2edf2;
$brown: #aaa9a2;
$midbrown: #c0bfb6;
$lightbrown: #edece4;
$blue: #5BA4E5;
$red: #e25440;
$orange: #F2A925;
$green: #9FBB58;
/* =============================================================================
Gradients
============================================================================= */
/*
* Auto Gradients
*
* If the gradient mixin is called with 1 value: gradient(#444) - then a second
* color which is 10% lighter than the entered value will be auto-generated. If
* the gradient mixin is called with 2 values: gradient(#444,#666) - then those
* two values will be used instead, as normal.
*/
@mixin gradient($color1: #aaa, $color2: none) {
@if $color2 == 'none' {
background-color: lighten($color1, 10%);
background-image: -webkit-linear-gradient(bottom, $color1, lighten($color1, 10%));
background-image: -moz-linear-gradient(bottom, $color1, lighten($color1, 10%));
background-image: -ms-linear-gradient(bottom, $color1, lighten($color1, 10%));
background-image: linear-gradient(bottom, $color1, lighten($color1, 10%));
} @else {
background-color: $color2;
background-image: -webkit-linear-gradient(bottom, $color1, $color2);
background-image: -moz-linear-gradient(bottom, $color1, $color2);
background-image: -ms-linear-gradient(bottom, $color1, $color2);
background-image: linear-gradient(to top, $color1, $color2);
}
}
// The same as the above, but with the colours reversed.
@mixin inversegradient($color1: #aaa, $color2: none) {
@if $color2 == 'none' {
background-color: $color1;
background-image: -webkit-linear-gradient(bottom, lighten($color1, 10%), $color1);
background-image: -moz-linear-gradient(bottom, lighten($color1, 10%), $color1);
background-image: -ms-linear-gradient(bottom, lighten($color1, 10%), $color1);
background-image: linear-gradient(bottom, lighten($color1, 10%), $color1);
} @else {
background-color: $color1;
background-image: -webkit-linear-gradient(bottom, $color2, $color1);
background-image: -moz-linear-gradient(bottom, $color2, $color1);
background-image: -ms-linear-gradient(bottom, $color2, $color1);
background-image: linear-gradient(to top, $color2, $color1);
}
}
/* =============================================================================
Global Elements
============================================================================= */
%box, .box {
padding: 15px;
margin-bottom: 15px;
background: #fff;
position: relative;
box-shadow: $shadow;
header {
height:14px;
border-bottom: 1px solid $lightbrown;
padding-bottom: 15px;
margin-bottom: 15px;
text-transform: uppercase;
font-size:0.85em;
color: $brown;
}
footer {
height:14px;
border-top: 1px solid $lightbrown;
padding-top: 10px;
margin-top:15px;
text-transform: uppercase;
font-size:0.85em;
color: $brown;
}
header a,
footer a {
color:$brown;
&:hover {
color:$darkgrey;
text-decoration: none;
}
}
}
/* =============================================================================
Animations
============================================================================= */
@include keyframes(fade-out) {
from {
opacity: 1;
}
to {
opacity: 0;
}
}

View file

@ -1,396 +0,0 @@
/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
-ms-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9.
* 2. Remove excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}

View file

@ -1,56 +0,0 @@
/*
* Welcome to Ghost - all styles for the Ghost platform are located within
* this set of Sass files. Use this file like a table of contents.
*/
/* ==========================================================================
Modules - These styles are re-used in many areas, and are grouped by type.
========================================================================== */
@import "modules/mixins";
/* Sass variables like colours, font sizes, basic styles. */
@import "modules/normalize";
/* Browser cross compatibility normalisation*/
@import "modules/icons";
/* All the styles controlling icons. */
@import "modules/animations";
/* Keyframe animations. */
@import "modules/global";
/* Global elements for the UI, like the header and footer. */
@import "modules/forms";
/* All the styles controlling forms and form fields. */
/* ==========================================================================
Layouts - Styles for specific admin screen layouts, grouped by screen.
========================================================================== */
@import "layouts/manage";
/* The manage posts screen. */
@import "layouts/editor";
/* The write/edit post screen. */
@import "layouts/auth";
/* The login screen. */
@import "layouts/errors";
/* The error screens. */
/* ==========================================================================
Settings Layouts - Styles for the individual settings panes, grouped by pane.
========================================================================== */
@import "layouts/settings";
/* The settings screen. */
@import "layouts/users";
/* The users pane. */
@import "layouts/plugins";
/* The plugins pane. */

View file

@ -28,7 +28,7 @@
<meta name="msapplication-square310x310logo" content="{{asset "img/large.png" ghost="true"}}" />
<link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans:400,300,700">
<link rel="stylesheet" href="{{asset "css/screen.css" ghost="true"}}">
<link rel="stylesheet" href="{{asset "css/ghost-ui.min.css" ghost="true"}}">
</head>
<body class="{{bodyClass}}{{update_notification classOnly="true"}}">
{{#unless hideNavbar}}

View file

@ -1,55 +1,55 @@
<!doctype html>
<!--[if (IE 8)&!(IEMobile)]><html class="no-js lt-ie9" lang="en"><![endif]-->
<!--[if (gte IE 9)| IEMobile |!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>{{code}}{{message}}</title>
<meta name="description" content="{{siteDescription}}">
<meta name="author" content="">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes" />
<title>{{code}}{{message}}</title>
<meta name="description" content="{{siteDescription}}">
<meta name="author" content="">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="shortcut icon" href="{{asset "favicon.ico"}}">
<meta http-equiv="cleartype" content="on">
<link rel="shortcut icon" href="{{asset "favicon.ico"}}">
<meta http-equiv="cleartype" content="on">
<link rel="stylesheet" type='text/css' href='//fonts.googleapis.com/css?family=Open+Sans:400,300,700'>
<link rel="stylesheet" href="{{asset "css/screen.css" ghost="true"}}">
</head>
<body class="{{bodyClass}}">
<main role="main" id="main">
<section class="error-content error-404 js-error-container">
<section class="error-details">
<figure class="error-image">
<img
class="error-ghost"
src="{{asset "img/404-ghost@2x.png" ghost="true"}}"
srcset="{{asset "img/404-ghost.png" ghost="true"}} 1x, {{asset "img/404-ghost@2x.png" ghost="true"}} 2x"/>
</figure>
<section class="error-message">
<h1 class="error-code">{{code}}</h1>
<h2 class="error-description">{{message}}</h2>
</section>
</section>
</section>
{{#if stack}}
<section class="error-stack">
<h3>Stack Trace</h3>
<p><strong>{{message}}</strong></p>
<ul class="error-stack-list">
{{#foreach stack}}
<li>
at
{{#if function}}<em class="error-stack-function">{{function}}</em>{{/if}}
<span class="error-stack-file">({{at}})</span>
</li>
{{/foreach}}
</ul>
</section>
{{/if}}
</main>
</body>
</html>
<link rel="stylesheet" type='text/css' href='//fonts.googleapis.com/css?family=Open+Sans:400,300,700'>
<link rel="stylesheet" href="{{asset "css/ghost-ui.min.css" ghost="true"}}">
</head>
<body class="{{bodyClass}}">
<main role="main" id="main">
<section class="error-content error-404 js-error-container">
<section class="error-details">
<figure class="error-image">
<img
class="error-ghost"
src="{{asset "img/404-ghost@2x.png" ghost="true"}}"
srcset="{{asset "img/404-ghost.png" ghost="true"}} 1x, {{asset "img/404-ghost@2x.png" ghost="true"}} 2x"/>
</figure>
<section class="error-message">
<h1 class="error-code">{{code}}</h1>
<h2 class="error-description">{{message}}</h2>
</section>
</section>
</section>
{{#if stack}}
<section class="error-stack">
<h3>Stack Trace</h3>
<p><strong>{{message}}</strong></p>
<ul class="error-stack-list">
{{#foreach stack}}
<li>
at
{{#if function}}<em class="error-stack-function">{{function}}</em>{{/if}}
<span class="error-stack-file">({{at}})</span>
</li>
{{/foreach}}
</ul>
</section>
{{/if}}
</main>
</body>
</html>

View file

@ -68,7 +68,6 @@
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-handlebars": "~0.6.0",
"grunt-contrib-jshint": "~0.8.0",
"grunt-contrib-sass": "~0.5.0",
"grunt-contrib-uglify": "~0.2.5",
"grunt-contrib-watch": "~0.5.3",
"grunt-express-server": "~0.4.11",