mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-23 02:41:50 +03:00
Merge branch 'master' into ember
Conflicts: .gitignore .npmignore Gemfile.lock Gruntfile.js bower.json core/clientold/assets/fonts/icons.dev.svg core/clientold/assets/fonts/icons.eot core/clientold/assets/fonts/icons.svg core/clientold/assets/fonts/icons.ttf core/clientold/assets/fonts/icons.woff core/clientold/assets/sass/ie.scss core/clientold/assets/sass/layouts/auth.scss core/clientold/assets/sass/layouts/editor.scss core/clientold/assets/sass/layouts/errors.scss core/clientold/assets/sass/layouts/manage.scss core/clientold/assets/sass/layouts/plugins.scss core/clientold/assets/sass/layouts/settings.scss core/clientold/assets/sass/layouts/users.scss core/clientold/assets/sass/modules/animations.scss core/clientold/assets/sass/modules/breakpoint.scss core/clientold/assets/sass/modules/breakpoint/_context.scss core/clientold/assets/sass/modules/breakpoint/_helpers.scss core/clientold/assets/sass/modules/breakpoint/_no-query.scss core/clientold/assets/sass/modules/breakpoint/_parsers.scss core/clientold/assets/sass/modules/breakpoint/_respond-to.scss core/clientold/assets/sass/modules/breakpoint/parsers/_double.scss core/clientold/assets/sass/modules/breakpoint/parsers/_query.scss core/clientold/assets/sass/modules/breakpoint/parsers/_resolution.scss core/clientold/assets/sass/modules/breakpoint/parsers/_single.scss core/clientold/assets/sass/modules/breakpoint/parsers/_triple.scss core/clientold/assets/sass/modules/breakpoint/parsers/double/_default-pair.scss core/clientold/assets/sass/modules/breakpoint/parsers/double/_default.scss core/clientold/assets/sass/modules/breakpoint/parsers/double/_double-string.scss core/clientold/assets/sass/modules/breakpoint/parsers/resolution/_resolution.scss core/clientold/assets/sass/modules/breakpoint/parsers/single/_default.scss core/clientold/assets/sass/modules/breakpoint/parsers/triple/_default.scss core/clientold/assets/sass/modules/forms.scss core/clientold/assets/sass/modules/global.scss core/clientold/assets/sass/modules/icons.scss core/clientold/assets/sass/modules/mixins.scss core/clientold/assets/sass/modules/normalize.scss core/clientold/assets/sass/screen.scss
This commit is contained in:
commit
9415a232b0
14
.gitignore
vendored
14
.gitignore
vendored
@ -33,20 +33,12 @@ projectFilesBackup
|
||||
.tmp
|
||||
|
||||
|
||||
.sass-cache/
|
||||
/core/clientold/tpl/hbs-tpl.js
|
||||
/core/clientold/assets/css
|
||||
/core/clientold/assets/sass/config.rb
|
||||
/core/clientold/assets/sass/layouts/config.rb
|
||||
/core/clientold/assets/sass/modules/config.rb
|
||||
/core/clientold/assets/sass/modules/bourbon
|
||||
/core/clientold/assets/sass/modules/bourbon/*
|
||||
/core/clientold/assets/fonts
|
||||
/core/clientold/assets/vendor
|
||||
/core/client/assets/css
|
||||
/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/client/assets/fonts
|
||||
/core/server/data/export/exported*
|
||||
/docs
|
||||
/_site
|
||||
|
@ -12,7 +12,6 @@ content/apps/**
|
||||
!content/apps/README.md
|
||||
node_modules/**
|
||||
core/test/**
|
||||
core/clientold/assets/sass/**
|
||||
core/server/data/export/exported*
|
||||
**/*.db*
|
||||
*.db*
|
||||
@ -25,6 +24,5 @@ config.js
|
||||
CONTRIBUTING.md
|
||||
SECURITY.md
|
||||
.travis.yml
|
||||
Gemfile*
|
||||
*.html
|
||||
bower_components/**
|
||||
|
@ -9,7 +9,6 @@ matrix:
|
||||
allow_failures:
|
||||
- env: DB=pg
|
||||
before_install:
|
||||
- gem install bundler
|
||||
- git clone git://github.com/n1k0/casperjs.git ~/casperjs
|
||||
- cd ~/casperjs
|
||||
- git checkout tags/1.1-beta3
|
||||
|
@ -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
|
||||
|
16
Gemfile.lock
16
Gemfile.lock
@ -1,16 +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
|
||||
x86-mingw32
|
||||
|
||||
DEPENDENCIES
|
||||
bourbon
|
||||
sass
|
82
Gruntfile.js
82
Gruntfile.js
@ -54,20 +54,6 @@ var path = require('path'),
|
||||
files: ['core/clientold/tpl/**/*.hbs'],
|
||||
tasks: ['handlebars']
|
||||
},
|
||||
emberTemplates: {
|
||||
files: 'core/client/templates/**/*.hbs',
|
||||
tasks: ['emberTemplates']
|
||||
},
|
||||
ember: {
|
||||
files: [
|
||||
'core/client/**/*.js'
|
||||
],
|
||||
tasks: ['transpile', 'concat_sourcemap']
|
||||
},
|
||||
sass: {
|
||||
files: ['<%= paths.adminOldAssets %>/sass/**/*'],
|
||||
tasks: ['sass:admin']
|
||||
},
|
||||
concat: {
|
||||
files: [
|
||||
'core/clientold/*.js',
|
||||
@ -84,8 +70,6 @@ var path = require('path'),
|
||||
'content/themes/casper/css/*.css',
|
||||
// Theme JS
|
||||
'content/themes/casper/js/*.js',
|
||||
// Admin CSS
|
||||
'<%= paths.adminOldAssets %>/css/*.css',
|
||||
// Admin JS
|
||||
'core/built/scripts/*.js'
|
||||
],
|
||||
@ -313,35 +297,10 @@ var path = require('path'),
|
||||
}
|
||||
},
|
||||
|
||||
// ### Config for grunt-contrib-sass
|
||||
// Compile all the SASS!
|
||||
sass: {
|
||||
admin: {
|
||||
files: {
|
||||
'<%= paths.adminOldAssets %>/css/screen.css': '<%= paths.adminOldAssets %>/sass/screen.scss'
|
||||
}
|
||||
},
|
||||
compress: {
|
||||
options: {
|
||||
style: 'compressed'
|
||||
},
|
||||
files: {
|
||||
'<%= paths.adminOldAssets %>/css/screen.css': '<%= paths.adminOldAssets %>/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.adminOldAssets %>/sass/modules/'
|
||||
},
|
||||
bower: {
|
||||
command: path.resolve(__dirname + '/node_modules/.bin/bower install'),
|
||||
options: {
|
||||
@ -470,6 +429,16 @@ 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
|
||||
}, {
|
||||
cwd: 'bower_components/ghost-ui/dist/',
|
||||
src: ['**'],
|
||||
dest: 'core/clientold/assets/',
|
||||
expand: true
|
||||
}]
|
||||
},
|
||||
prod: {
|
||||
@ -478,6 +447,16 @@ 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
|
||||
}, {
|
||||
cwd: 'bower_components/ghost-ui/dist/',
|
||||
src: ['**'],
|
||||
dest: 'core/clientold/assets/',
|
||||
expand: true
|
||||
}]
|
||||
},
|
||||
release: {
|
||||
@ -486,6 +465,16 @@ 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
|
||||
}, {
|
||||
cwd: 'bower_components/ghost-ui/dist/',
|
||||
src: ['**'],
|
||||
dest: 'core/clientold/assets/',
|
||||
expand: true
|
||||
}, {
|
||||
expand: true,
|
||||
src: buildGlob,
|
||||
@ -947,15 +936,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',
|
||||
@ -967,7 +954,6 @@ var path = require('path'),
|
||||
grunt.registerTask('dev',
|
||||
'Dev Mode; watch files and restart server on changes',
|
||||
[
|
||||
'sass:admin',
|
||||
'handlebars',
|
||||
'concat',
|
||||
'emberBuild',
|
||||
@ -1012,16 +998,16 @@ 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']);
|
||||
|
||||
// All tasks related to building the Ember client code
|
||||
grunt.registerTask('emberBuild', 'Build Ember JS & templates for development', ['emberTemplates:dev', 'transpile', 'concat_sourcemap']);
|
||||
|
||||
// When you just say 'grunt'
|
||||
grunt.registerTask('default', 'Build CSS, JS & templates for development', ['update_submodules', 'sass:compress', 'handlebars', 'concat', 'copy:dev', 'emberBuild']);
|
||||
grunt.registerTask('default', 'Build JS & templates for development', ['update_submodules', 'handlebars', 'concat', 'copy:dev', 'emberBuild']);
|
||||
};
|
||||
|
||||
module.exports = configureGrunt;
|
@ -7,6 +7,7 @@
|
||||
"ember": "~1.4.0",
|
||||
"ember-resolver": "git://github.com/stefanpenner/ember-jj-abrams-resolver.git#9805033c178e7f857f801359664adb599444b430",
|
||||
"fastclick": "1.0.0",
|
||||
"ghost-ui": "0.1.0",
|
||||
"handlebars": "~1.1.2",
|
||||
"ic-ajax": "1.0.1",
|
||||
"iCheck": "1.0.1",
|
||||
|
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.
@ -1 +0,0 @@
|
||||
/* IE specific override styles. */
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
//************************************************************************//
|
||||
// These mixins/functions are deprecated
|
||||
// They will be removed in the next MAJOR version release
|
||||
//************************************************************************//
|
||||
@mixin box-shadow ($shadows...) {
|
||||
@include prefixer(box-shadow, $shadows, spec);
|
||||
@warn "box-shadow is deprecated and will be removed in the next major version release";
|
||||
}
|
||||
|
||||
@mixin background-size ($lengths...) {
|
||||
@include prefixer(background-size, $lengths, spec);
|
||||
@warn "background-size is deprecated and will be removed in the next major version release";
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
// Custom Helpers
|
||||
@import "helpers/deprecated-webkit-gradient";
|
||||
@import "helpers/gradient-positions-parser";
|
||||
@import "helpers/linear-positions-parser";
|
||||
@import "helpers/radial-arg-parser";
|
||||
@import "helpers/radial-positions-parser";
|
||||
@import "helpers/render-gradients";
|
||||
@import "helpers/shape-size-stripper";
|
||||
|
||||
// Custom Functions
|
||||
@import "functions/compact";
|
||||
@import "functions/flex-grid";
|
||||
@import "functions/grid-width";
|
||||
@import "functions/linear-gradient";
|
||||
@import "functions/modular-scale";
|
||||
@import "functions/px-to-em";
|
||||
@import "functions/radial-gradient";
|
||||
@import "functions/tint-shade";
|
||||
@import "functions/transition-property-name";
|
||||
|
||||
// CSS3 Mixins
|
||||
@import "css3/animation";
|
||||
@import "css3/appearance";
|
||||
@import "css3/backface-visibility";
|
||||
@import "css3/background";
|
||||
@import "css3/background-image";
|
||||
@import "css3/border-image";
|
||||
@import "css3/border-radius";
|
||||
@import "css3/box-sizing";
|
||||
@import "css3/columns";
|
||||
@import "css3/flex-box";
|
||||
@import "css3/font-face";
|
||||
@import "css3/hidpi-media-query";
|
||||
@import "css3/image-rendering";
|
||||
@import "css3/inline-block";
|
||||
@import "css3/keyframes";
|
||||
@import "css3/linear-gradient";
|
||||
@import "css3/perspective";
|
||||
@import "css3/radial-gradient";
|
||||
@import "css3/transform";
|
||||
@import "css3/transition";
|
||||
@import "css3/user-select";
|
||||
@import "css3/placeholder";
|
||||
|
||||
// Addons & other mixins
|
||||
@import "addons/button";
|
||||
@import "addons/clearfix";
|
||||
@import "addons/font-family";
|
||||
@import "addons/hide-text";
|
||||
@import "addons/html5-input-types";
|
||||
@import "addons/position";
|
||||
@import "addons/prefixer";
|
||||
@import "addons/retina-image";
|
||||
@import "addons/size";
|
||||
@import "addons/timing-functions";
|
||||
@import "addons/triangle";
|
||||
|
||||
// Soon to be deprecated Mixins
|
||||
@import "bourbon-deprecated-upcoming";
|
@ -1,273 +0,0 @@
|
||||
@mixin button ($style: simple, $base-color: #4294f0) {
|
||||
|
||||
@if type-of($style) == color {
|
||||
$base-color: $style;
|
||||
$style: simple;
|
||||
}
|
||||
|
||||
// Grayscale button
|
||||
@if $base-color == grayscale($base-color) {
|
||||
@if $style == simple {
|
||||
@include simple($base-color, $grayscale: true);
|
||||
}
|
||||
|
||||
@else if $style == shiny {
|
||||
@include shiny($base-color, $grayscale: true);
|
||||
}
|
||||
|
||||
@else if $style == pill {
|
||||
@include pill($base-color, $grayscale: true);
|
||||
}
|
||||
}
|
||||
|
||||
// Colored button
|
||||
@else {
|
||||
@if $style == simple {
|
||||
@include simple($base-color);
|
||||
}
|
||||
|
||||
@else if $style == shiny {
|
||||
@include shiny($base-color);
|
||||
}
|
||||
|
||||
@else if $style == pill {
|
||||
@include pill($base-color);
|
||||
}
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Simple Button
|
||||
//************************************************************************//
|
||||
@mixin simple($base-color, $grayscale: false) {
|
||||
$color: hsl(0, 0, 100%);
|
||||
$border: adjust-color($base-color, $saturation: 9%, $lightness: -14%);
|
||||
$inset-shadow: adjust-color($base-color, $saturation: -8%, $lightness: 15%);
|
||||
$stop-gradient: adjust-color($base-color, $saturation: 9%, $lightness: -11%);
|
||||
$text-shadow: adjust-color($base-color, $saturation: 15%, $lightness: -18%);
|
||||
|
||||
@if lightness($base-color) > 70% {
|
||||
$color: hsl(0, 0, 20%);
|
||||
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
|
||||
}
|
||||
|
||||
@if $grayscale == true {
|
||||
$border: grayscale($border);
|
||||
$inset-shadow: grayscale($inset-shadow);
|
||||
$stop-gradient: grayscale($stop-gradient);
|
||||
$text-shadow: grayscale($text-shadow);
|
||||
}
|
||||
|
||||
border: 1px solid $border;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 1px 0 0 $inset-shadow;
|
||||
color: $color;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
@include linear-gradient ($base-color, $stop-gradient);
|
||||
padding: 7px 18px;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 1px 0 $text-shadow;
|
||||
background-clip: padding-box;
|
||||
|
||||
&:hover:not(:disabled) {
|
||||
$base-color-hover: adjust-color($base-color, $saturation: -4%, $lightness: -5%);
|
||||
$inset-shadow-hover: adjust-color($base-color, $saturation: -7%, $lightness: 5%);
|
||||
$stop-gradient-hover: adjust-color($base-color, $saturation: 8%, $lightness: -14%);
|
||||
|
||||
@if $grayscale == true {
|
||||
$base-color-hover: grayscale($base-color-hover);
|
||||
$inset-shadow-hover: grayscale($inset-shadow-hover);
|
||||
$stop-gradient-hover: grayscale($stop-gradient-hover);
|
||||
}
|
||||
|
||||
box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
|
||||
cursor: pointer;
|
||||
@include linear-gradient ($base-color-hover, $stop-gradient-hover);
|
||||
}
|
||||
|
||||
&:active:not(:disabled) {
|
||||
$border-active: adjust-color($base-color, $saturation: 9%, $lightness: -14%);
|
||||
$inset-shadow-active: adjust-color($base-color, $saturation: 7%, $lightness: -17%);
|
||||
|
||||
@if $grayscale == true {
|
||||
$border-active: grayscale($border-active);
|
||||
$inset-shadow-active: grayscale($inset-shadow-active);
|
||||
}
|
||||
|
||||
border: 1px solid $border-active;
|
||||
box-shadow: inset 0 0 8px 4px $inset-shadow-active, inset 0 0 8px 4px $inset-shadow-active, 0 1px 1px 0 #eee;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Shiny Button
|
||||
//************************************************************************//
|
||||
@mixin shiny($base-color, $grayscale: false) {
|
||||
$color: hsl(0, 0, 100%);
|
||||
$border: adjust-color($base-color, $red: -117, $green: -111, $blue: -81);
|
||||
$border-bottom: adjust-color($base-color, $red: -126, $green: -127, $blue: -122);
|
||||
$fourth-stop: adjust-color($base-color, $red: -79, $green: -70, $blue: -46);
|
||||
$inset-shadow: adjust-color($base-color, $red: 37, $green: 29, $blue: 12);
|
||||
$second-stop: adjust-color($base-color, $red: -56, $green: -50, $blue: -33);
|
||||
$text-shadow: adjust-color($base-color, $red: -140, $green: -141, $blue: -114);
|
||||
$third-stop: adjust-color($base-color, $red: -86, $green: -75, $blue: -48);
|
||||
|
||||
@if lightness($base-color) > 70% {
|
||||
$color: hsl(0, 0, 20%);
|
||||
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
|
||||
}
|
||||
|
||||
@if $grayscale == true {
|
||||
$border: grayscale($border);
|
||||
$border-bottom: grayscale($border-bottom);
|
||||
$fourth-stop: grayscale($fourth-stop);
|
||||
$inset-shadow: grayscale($inset-shadow);
|
||||
$second-stop: grayscale($second-stop);
|
||||
$text-shadow: grayscale($text-shadow);
|
||||
$third-stop: grayscale($third-stop);
|
||||
}
|
||||
|
||||
border: 1px solid $border;
|
||||
border-bottom: 1px solid $border-bottom;
|
||||
border-radius: 5px;
|
||||
box-shadow: inset 0 1px 0 0 $inset-shadow;
|
||||
color: $color;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
@include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);
|
||||
padding: 8px 20px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 -1px 1px $text-shadow;
|
||||
|
||||
&:hover:not(:disabled) {
|
||||
$first-stop-hover: adjust-color($base-color, $red: -13, $green: -15, $blue: -18);
|
||||
$second-stop-hover: adjust-color($base-color, $red: -66, $green: -62, $blue: -51);
|
||||
$third-stop-hover: adjust-color($base-color, $red: -93, $green: -85, $blue: -66);
|
||||
$fourth-stop-hover: adjust-color($base-color, $red: -86, $green: -80, $blue: -63);
|
||||
|
||||
@if $grayscale == true {
|
||||
$first-stop-hover: grayscale($first-stop-hover);
|
||||
$second-stop-hover: grayscale($second-stop-hover);
|
||||
$third-stop-hover: grayscale($third-stop-hover);
|
||||
$fourth-stop-hover: grayscale($fourth-stop-hover);
|
||||
}
|
||||
|
||||
cursor: pointer;
|
||||
@include linear-gradient(top, $first-stop-hover 0%,
|
||||
$second-stop-hover 50%,
|
||||
$third-stop-hover 50%,
|
||||
$fourth-stop-hover 100%);
|
||||
}
|
||||
|
||||
&:active:not(:disabled) {
|
||||
$inset-shadow-active: adjust-color($base-color, $red: -111, $green: -116, $blue: -122);
|
||||
|
||||
@if $grayscale == true {
|
||||
$inset-shadow-active: grayscale($inset-shadow-active);
|
||||
}
|
||||
|
||||
box-shadow: inset 0 0 20px 0 $inset-shadow-active, 0 1px 0 #fff;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pill Button
|
||||
//************************************************************************//
|
||||
@mixin pill($base-color, $grayscale: false) {
|
||||
$color: hsl(0, 0, 100%);
|
||||
$border-bottom: adjust-color($base-color, $hue: 8, $saturation: -11%, $lightness: -26%);
|
||||
$border-sides: adjust-color($base-color, $hue: 4, $saturation: -21%, $lightness: -21%);
|
||||
$border-top: adjust-color($base-color, $hue: -1, $saturation: -30%, $lightness: -15%);
|
||||
$inset-shadow: adjust-color($base-color, $hue: -1, $saturation: -1%, $lightness: 7%);
|
||||
$stop-gradient: adjust-color($base-color, $hue: 8, $saturation: 14%, $lightness: -10%);
|
||||
$text-shadow: adjust-color($base-color, $hue: 5, $saturation: -19%, $lightness: -15%);
|
||||
|
||||
@if lightness($base-color) > 70% {
|
||||
$color: hsl(0, 0, 20%);
|
||||
$text-shadow: adjust-color($base-color, $saturation: 10%, $lightness: 4%);
|
||||
}
|
||||
|
||||
@if $grayscale == true {
|
||||
$border-bottom: grayscale($border-bottom);
|
||||
$border-sides: grayscale($border-sides);
|
||||
$border-top: grayscale($border-top);
|
||||
$inset-shadow: grayscale($inset-shadow);
|
||||
$stop-gradient: grayscale($stop-gradient);
|
||||
$text-shadow: grayscale($text-shadow);
|
||||
}
|
||||
|
||||
border: 1px solid $border-top;
|
||||
border-color: $border-top $border-sides $border-bottom;
|
||||
border-radius: 16px;
|
||||
box-shadow: inset 0 1px 0 0 $inset-shadow, 0 1px 2px 0 #b3b3b3;
|
||||
color: $color;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
@include linear-gradient ($base-color, $stop-gradient);
|
||||
padding: 5px 16px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
text-shadow: 0 -1px 1px $text-shadow;
|
||||
background-clip: padding-box;
|
||||
|
||||
&:hover:not(:disabled) {
|
||||
$base-color-hover: adjust-color($base-color, $lightness: -4.5%);
|
||||
$border-bottom: adjust-color($base-color, $hue: 8, $saturation: 13.5%, $lightness: -32%);
|
||||
$border-sides: adjust-color($base-color, $hue: 4, $saturation: -2%, $lightness: -27%);
|
||||
$border-top: adjust-color($base-color, $hue: -1, $saturation: -17%, $lightness: -21%);
|
||||
$inset-shadow-hover: adjust-color($base-color, $saturation: -1%, $lightness: 3%);
|
||||
$stop-gradient-hover: adjust-color($base-color, $hue: 8, $saturation: -4%, $lightness: -15.5%);
|
||||
$text-shadow-hover: adjust-color($base-color, $hue: 5, $saturation: -5%, $lightness: -22%);
|
||||
|
||||
@if $grayscale == true {
|
||||
$base-color-hover: grayscale($base-color-hover);
|
||||
$border-bottom: grayscale($border-bottom);
|
||||
$border-sides: grayscale($border-sides);
|
||||
$border-top: grayscale($border-top);
|
||||
$inset-shadow-hover: grayscale($inset-shadow-hover);
|
||||
$stop-gradient-hover: grayscale($stop-gradient-hover);
|
||||
$text-shadow-hover: grayscale($text-shadow-hover);
|
||||
}
|
||||
|
||||
border: 1px solid $border-top;
|
||||
border-color: $border-top $border-sides $border-bottom;
|
||||
box-shadow: inset 0 1px 0 0 $inset-shadow-hover;
|
||||
cursor: pointer;
|
||||
@include linear-gradient ($base-color-hover, $stop-gradient-hover);
|
||||
text-shadow: 0 -1px 1px $text-shadow-hover;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
|
||||
&:active:not(:disabled) {
|
||||
$active-color: adjust-color($base-color, $hue: 4, $saturation: -12%, $lightness: -10%);
|
||||
$border-active: adjust-color($base-color, $hue: 6, $saturation: -2.5%, $lightness: -30%);
|
||||
$border-bottom-active: adjust-color($base-color, $hue: 11, $saturation: 6%, $lightness: -31%);
|
||||
$inset-shadow-active: adjust-color($base-color, $hue: 9, $saturation: 2%, $lightness: -21.5%);
|
||||
$text-shadow-active: adjust-color($base-color, $hue: 5, $saturation: -12%, $lightness: -21.5%);
|
||||
|
||||
@if $grayscale == true {
|
||||
$active-color: grayscale($active-color);
|
||||
$border-active: grayscale($border-active);
|
||||
$border-bottom-active: grayscale($border-bottom-active);
|
||||
$inset-shadow-active: grayscale($inset-shadow-active);
|
||||
$text-shadow-active: grayscale($text-shadow-active);
|
||||
}
|
||||
|
||||
background: $active-color;
|
||||
border: 1px solid $border-active;
|
||||
border-bottom: 1px solid $border-bottom-active;
|
||||
box-shadow: inset 0 0 6px 3px $inset-shadow-active, 0 1px 0 0 #fff;
|
||||
text-shadow: 0 -1px 1px $text-shadow-active;
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
// Micro clearfix provides an easy way to contain floats without adding additional markup
|
||||
//
|
||||
// Example usage:
|
||||
//
|
||||
// // Contain all floats within .wrapper
|
||||
// .wrapper {
|
||||
// @include clearfix;
|
||||
// .content,
|
||||
// .sidebar {
|
||||
// float : left;
|
||||
// }
|
||||
// }
|
||||
|
||||
@mixin clearfix {
|
||||
*zoom: 1;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
&:after {
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
|
||||
// Acknowledgements
|
||||
// Micro clearfix: [Nicolas Gallagher](http://nicolasgallagher.com/micro-clearfix-hack/)
|
@ -1,5 +0,0 @@
|
||||
$georgia: Georgia, Cambria, "Times New Roman", Times, serif;
|
||||
$helvetica: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$lucida-grande: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
$monospace: "Bitstream Vera Sans Mono", Consolas, Courier, monospace;
|
||||
$verdana: Verdana, Geneva, sans-serif;
|
@ -1,5 +0,0 @@
|
||||
@mixin hide-text {
|
||||
color: transparent;
|
||||
font: 0/0 a;
|
||||
text-shadow: none;
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Generate a variable ($all-text-inputs) with a list of all html5
|
||||
// input types that have a text-based input, excluding textarea.
|
||||
// http://diveintohtml5.org/forms.html
|
||||
//************************************************************************//
|
||||
$inputs-list: 'input[type="email"]',
|
||||
'input[type="number"]',
|
||||
'input[type="password"]',
|
||||
'input[type="search"]',
|
||||
'input[type="tel"]',
|
||||
'input[type="text"]',
|
||||
'input[type="url"]',
|
||||
|
||||
// Webkit & Gecko may change the display of these in the future
|
||||
'input[type="color"]',
|
||||
'input[type="date"]',
|
||||
'input[type="datetime"]',
|
||||
'input[type="datetime-local"]',
|
||||
'input[type="month"]',
|
||||
'input[type="time"]',
|
||||
'input[type="week"]';
|
||||
|
||||
$unquoted-inputs-list: ();
|
||||
@each $input-type in $inputs-list {
|
||||
$unquoted-inputs-list: append($unquoted-inputs-list, unquote($input-type), comma);
|
||||
}
|
||||
|
||||
$all-text-inputs: $unquoted-inputs-list;
|
||||
|
||||
|
||||
// Hover Pseudo-class
|
||||
//************************************************************************//
|
||||
$all-text-inputs-hover: ();
|
||||
@each $input-type in $unquoted-inputs-list {
|
||||
$input-type-hover: $input-type + ":hover";
|
||||
$all-text-inputs-hover: append($all-text-inputs-hover, $input-type-hover, comma);
|
||||
}
|
||||
|
||||
// Focus Pseudo-class
|
||||
//************************************************************************//
|
||||
$all-text-inputs-focus: ();
|
||||
@each $input-type in $unquoted-inputs-list {
|
||||
$input-type-focus: $input-type + ":focus";
|
||||
$all-text-inputs-focus: append($all-text-inputs-focus, $input-type-focus, comma);
|
||||
}
|
||||
|
||||
// You must use interpolation on the variable:
|
||||
// #{$all-text-inputs}
|
||||
// #{$all-text-inputs-hover}
|
||||
// #{$all-text-inputs-focus}
|
||||
|
||||
// Example
|
||||
//************************************************************************//
|
||||
// #{$all-text-inputs}, textarea {
|
||||
// border: 1px solid red;
|
||||
// }
|
@ -1,42 +0,0 @@
|
||||
@mixin position ($position: relative, $coordinates: 0 0 0 0) {
|
||||
|
||||
@if type-of($position) == list {
|
||||
$coordinates: $position;
|
||||
$position: relative;
|
||||
}
|
||||
|
||||
$top: nth($coordinates, 1);
|
||||
$right: nth($coordinates, 2);
|
||||
$bottom: nth($coordinates, 3);
|
||||
$left: nth($coordinates, 4);
|
||||
|
||||
position: $position;
|
||||
|
||||
@if $top == auto {
|
||||
top: $top;
|
||||
}
|
||||
@else if not(unitless($top)) {
|
||||
top: $top;
|
||||
}
|
||||
|
||||
@if $right == auto {
|
||||
right: $right;
|
||||
}
|
||||
@else if not(unitless($right)) {
|
||||
right: $right;
|
||||
}
|
||||
|
||||
@if $bottom == auto {
|
||||
bottom: $bottom;
|
||||
}
|
||||
@else if not(unitless($bottom)) {
|
||||
bottom: $bottom;
|
||||
}
|
||||
|
||||
@if $left == auto {
|
||||
left: $left;
|
||||
}
|
||||
@else if not(unitless($left)) {
|
||||
left: $left;
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Example: @include prefixer(border-radius, $radii, webkit ms spec);
|
||||
//************************************************************************//
|
||||
$prefix-for-webkit: true !default;
|
||||
$prefix-for-mozilla: true !default;
|
||||
$prefix-for-microsoft: true !default;
|
||||
$prefix-for-opera: true !default;
|
||||
$prefix-for-spec: true !default; // required for keyframe mixin
|
||||
|
||||
@mixin prefixer ($property, $value, $prefixes) {
|
||||
@each $prefix in $prefixes {
|
||||
@if $prefix == webkit {
|
||||
@if $prefix-for-webkit {
|
||||
-webkit-#{$property}: $value;
|
||||
}
|
||||
}
|
||||
@else if $prefix == moz {
|
||||
@if $prefix-for-mozilla {
|
||||
-moz-#{$property}: $value;
|
||||
}
|
||||
}
|
||||
@else if $prefix == ms {
|
||||
@if $prefix-for-microsoft {
|
||||
-ms-#{$property}: $value;
|
||||
}
|
||||
}
|
||||
@else if $prefix == o {
|
||||
@if $prefix-for-opera {
|
||||
-o-#{$property}: $value;
|
||||
}
|
||||
}
|
||||
@else if $prefix == spec {
|
||||
@if $prefix-for-spec {
|
||||
#{$property}: $value;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
@warn "Unrecognized prefix: #{$prefix}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin disable-prefix-for-all() {
|
||||
$prefix-for-webkit: false;
|
||||
$prefix-for-mozilla: false;
|
||||
$prefix-for-microsoft: false;
|
||||
$prefix-for-opera: false;
|
||||
$prefix-for-spec: false;
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $asset-pipeline: false) {
|
||||
@if $asset-pipeline {
|
||||
background-image: image_url($filename + "." + $extension);
|
||||
}
|
||||
@else {
|
||||
background-image: url($filename + "." + $extension);
|
||||
}
|
||||
|
||||
@include hidpi {
|
||||
|
||||
@if $asset-pipeline {
|
||||
@if $retina-filename {
|
||||
background-image: image_url($retina-filename + "." + $extension);
|
||||
}
|
||||
@else {
|
||||
background-image: image_url($filename + "@2x" + "." + $extension);
|
||||
}
|
||||
}
|
||||
|
||||
@else {
|
||||
@if $retina-filename {
|
||||
background-image: url($retina-filename + "." + $extension);
|
||||
}
|
||||
@else {
|
||||
background-image: url($filename + "@2x" + "." + $extension);
|
||||
}
|
||||
}
|
||||
|
||||
background-size: $background-size;
|
||||
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
@mixin size($size) {
|
||||
@if length($size) == 1 {
|
||||
@if $size == auto {
|
||||
width: $size;
|
||||
height: $size;
|
||||
}
|
||||
|
||||
@else if unitless($size) {
|
||||
width: $size + px;
|
||||
height: $size + px;
|
||||
}
|
||||
|
||||
@else if not(unitless($size)) {
|
||||
width: $size;
|
||||
height: $size;
|
||||
}
|
||||
}
|
||||
|
||||
// Width x Height
|
||||
@if length($size) == 2 {
|
||||
$width: nth($size, 1);
|
||||
$height: nth($size, 2);
|
||||
|
||||
@if $width == auto {
|
||||
width: $width;
|
||||
}
|
||||
@else if not(unitless($width)) {
|
||||
width: $width;
|
||||
}
|
||||
@else if unitless($width) {
|
||||
width: $width + px;
|
||||
}
|
||||
|
||||
@if $height == auto {
|
||||
height: $height;
|
||||
}
|
||||
@else if not(unitless($height)) {
|
||||
height: $height;
|
||||
}
|
||||
@else if unitless($height) {
|
||||
height: $height + px;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
// CSS cubic-bezier timing functions. Timing functions courtesy of jquery.easie (github.com/jaukia/easie)
|
||||
// Timing functions are the same as demo'ed here: http://jqueryui.com/demos/effect/easing.html
|
||||
|
||||
// EASE IN
|
||||
$ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530);
|
||||
$ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190);
|
||||
$ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220);
|
||||
$ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060);
|
||||
$ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715);
|
||||
$ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035);
|
||||
$ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335);
|
||||
$ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045);
|
||||
|
||||
// EASE OUT
|
||||
$ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940);
|
||||
$ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
$ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000);
|
||||
$ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000);
|
||||
$ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000);
|
||||
$ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000);
|
||||
$ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000);
|
||||
$ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275);
|
||||
|
||||
// EASE IN OUT
|
||||
$ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955);
|
||||
$ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
||||
$ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
$ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000);
|
||||
$ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950);
|
||||
$ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000);
|
||||
$ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860);
|
||||
$ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550);
|
@ -1,45 +0,0 @@
|
||||
@mixin triangle ($size, $color, $direction) {
|
||||
height: 0;
|
||||
width: 0;
|
||||
|
||||
@if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) {
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
border-width: $size / 2;
|
||||
|
||||
@if $direction == up {
|
||||
border-bottom-color: $color;
|
||||
|
||||
} @else if $direction == right {
|
||||
border-left-color: $color;
|
||||
|
||||
} @else if $direction == down {
|
||||
border-top-color: $color;
|
||||
|
||||
} @else if $direction == left {
|
||||
border-right-color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
@else if ($direction == up-right) or ($direction == up-left) {
|
||||
border-top: $size solid $color;
|
||||
|
||||
@if $direction == up-right {
|
||||
border-left: $size solid transparent;
|
||||
|
||||
} @else if $direction == up-left {
|
||||
border-right: $size solid transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@else if ($direction == down-right) or ($direction == down-left) {
|
||||
border-bottom: $size solid $color;
|
||||
|
||||
@if $direction == down-right {
|
||||
border-left: $size solid transparent;
|
||||
|
||||
} @else if $direction == down-left {
|
||||
border-right: $size solid transparent;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
// http://www.w3.org/TR/css3-animations/#the-animation-name-property-
|
||||
// Each of these mixins support comma separated lists of values, which allows different transitions for individual properties to be described in a single style rule. Each value in the list corresponds to the value at that same position in the other properties.
|
||||
|
||||
// Official animation shorthand property.
|
||||
@mixin animation ($animations...) {
|
||||
@include prefixer(animation, $animations, webkit moz spec);
|
||||
}
|
||||
|
||||
// Individual Animation Properties
|
||||
@mixin animation-name ($names...) {
|
||||
@include prefixer(animation-name, $names, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-duration ($times...) {
|
||||
@include prefixer(animation-duration, $times, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-timing-function ($motions...) {
|
||||
// ease | linear | ease-in | ease-out | ease-in-out
|
||||
@include prefixer(animation-timing-function, $motions, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-iteration-count ($values...) {
|
||||
// infinite | <number>
|
||||
@include prefixer(animation-iteration-count, $values, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-direction ($directions...) {
|
||||
// normal | alternate
|
||||
@include prefixer(animation-direction, $directions, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-play-state ($states...) {
|
||||
// running | paused
|
||||
@include prefixer(animation-play-state, $states, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-delay ($times...) {
|
||||
@include prefixer(animation-delay, $times, webkit moz spec);
|
||||
}
|
||||
|
||||
|
||||
@mixin animation-fill-mode ($modes...) {
|
||||
// none | forwards | backwards | both
|
||||
@include prefixer(animation-fill-mode, $modes, webkit moz spec);
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
@mixin appearance ($value) {
|
||||
@include prefixer(appearance, $value, webkit moz ms o spec);
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Backface-visibility mixin
|
||||
//************************************************************************//
|
||||
@mixin backface-visibility($visibility) {
|
||||
@include prefixer(backface-visibility, $visibility, webkit spec);
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Background-image property for adding multiple background images with
|
||||
// gradients, or for stringing multiple gradients together.
|
||||
//************************************************************************//
|
||||
|
||||
@mixin background-image($images...) {
|
||||
background-image: _add-prefix($images, webkit);
|
||||
background-image: _add-prefix($images);
|
||||
}
|
||||
|
||||
@function _add-prefix($images, $vendor: false) {
|
||||
$images-prefixed: ();
|
||||
$gradient-positions: false;
|
||||
@for $i from 1 through length($images) {
|
||||
$type: type-of(nth($images, $i)); // Get type of variable - List or String
|
||||
|
||||
// If variable is a list - Gradient
|
||||
@if $type == list {
|
||||
$gradient-type: nth(nth($images, $i), 1); // linear or radial
|
||||
$gradient-pos: null;
|
||||
$gradient-args: null;
|
||||
|
||||
@if ($gradient-type == linear) or ($gradient-type == radial) {
|
||||
$gradient-pos: nth(nth($images, $i), 2); // Get gradient position
|
||||
$gradient-args: nth(nth($images, $i), 3); // Get actual gradient (red, blue)
|
||||
}
|
||||
@else {
|
||||
$gradient-args: nth(nth($images, $i), 2); // Get actual gradient (red, blue)
|
||||
}
|
||||
|
||||
$gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
|
||||
$gradient: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
|
||||
$images-prefixed: append($images-prefixed, $gradient, comma);
|
||||
}
|
||||
// If variable is a string - Image
|
||||
@else if $type == string {
|
||||
$images-prefixed: join($images-prefixed, nth($images, $i), comma);
|
||||
}
|
||||
}
|
||||
@return $images-prefixed;
|
||||
}
|
||||
|
||||
//Examples:
|
||||
//@include background-image(linear-gradient(top, orange, red));
|
||||
//@include background-image(radial-gradient(50% 50%, cover circle, orange, red));
|
||||
//@include background-image(url("/images/a.png"), linear-gradient(orange, red));
|
||||
//@include background-image(url("image.png"), linear-gradient(orange, red), url("image.png"));
|
||||
//@include background-image(linear-gradient(hsla(0, 100%, 100%, 0.25) 0%, hsla(0, 100%, 100%, 0.08) 50%, transparent 50%), linear-gradient(orange, red));
|
@ -1,103 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Background property for adding multiple backgrounds using shorthand
|
||||
// notation.
|
||||
//************************************************************************//
|
||||
|
||||
@mixin background(
|
||||
$background-1 , $background-2: false,
|
||||
$background-3: false, $background-4: false,
|
||||
$background-5: false, $background-6: false,
|
||||
$background-7: false, $background-8: false,
|
||||
$background-9: false, $background-10: false,
|
||||
$fallback: false
|
||||
) {
|
||||
$backgrounds: compact($background-1, $background-2,
|
||||
$background-3, $background-4,
|
||||
$background-5, $background-6,
|
||||
$background-7, $background-8,
|
||||
$background-9, $background-10);
|
||||
|
||||
$fallback-color: false;
|
||||
@if (type-of($fallback) == color) or ($fallback == "transparent") {
|
||||
$fallback-color: $fallback;
|
||||
}
|
||||
@else {
|
||||
$fallback-color: _extract-background-color($backgrounds);
|
||||
}
|
||||
|
||||
@if $fallback-color {
|
||||
background-color: $fallback-color;
|
||||
}
|
||||
background: _background-add-prefix($backgrounds, webkit);
|
||||
background: _background-add-prefix($backgrounds);
|
||||
}
|
||||
|
||||
@function _extract-background-color($backgrounds) {
|
||||
$final-bg-layer: nth($backgrounds, length($backgrounds));
|
||||
@if type-of($final-bg-layer) == list {
|
||||
@for $i from 1 through length($final-bg-layer) {
|
||||
$value: nth($final-bg-layer, $i);
|
||||
@if type-of($value) == color {
|
||||
@return $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@return false;
|
||||
}
|
||||
|
||||
@function _background-add-prefix($backgrounds, $vendor: false) {
|
||||
$backgrounds-prefixed: ();
|
||||
|
||||
@for $i from 1 through length($backgrounds) {
|
||||
$shorthand: nth($backgrounds, $i); // Get member for current index
|
||||
$type: type-of($shorthand); // Get type of variable - List (gradient) or String (image)
|
||||
|
||||
// If shorthand is a list (gradient)
|
||||
@if $type == list {
|
||||
$first-member: nth($shorthand, 1); // Get first member of shorthand
|
||||
|
||||
// Linear Gradient
|
||||
@if index(linear radial, nth($first-member, 1)) {
|
||||
$gradient-type: nth($first-member, 1); // linear || radial
|
||||
$gradient-args: false;
|
||||
$gradient-positions: false;
|
||||
$shorthand-start: false;
|
||||
@if type-of($first-member) == list { // Linear gradient plus additional shorthand values - lg(red,orange)repeat,...
|
||||
$gradient-positions: nth($first-member, 2);
|
||||
$gradient-args: nth($first-member, 3);
|
||||
$shorthand-start: 2;
|
||||
}
|
||||
@else { // Linear gradient only - lg(red,orange),...
|
||||
$gradient-positions: nth($shorthand, 2);
|
||||
$gradient-args: nth($shorthand, 3); // Get gradient (red, blue)
|
||||
}
|
||||
|
||||
$gradient-positions: _gradient-positions-parser($gradient-type, $gradient-positions);
|
||||
$gradient: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
|
||||
|
||||
// Append any additional shorthand args to gradient
|
||||
@if $shorthand-start {
|
||||
@for $j from $shorthand-start through length($shorthand) {
|
||||
$gradient: join($gradient, nth($shorthand, $j), space);
|
||||
}
|
||||
}
|
||||
$backgrounds-prefixed: append($backgrounds-prefixed, $gradient, comma);
|
||||
}
|
||||
// Image with additional properties
|
||||
@else {
|
||||
$backgrounds-prefixed: append($backgrounds-prefixed, $shorthand, comma);
|
||||
}
|
||||
}
|
||||
// If shorthand is a simple string (color or image)
|
||||
@else if $type == string {
|
||||
$backgrounds-prefixed: join($backgrounds-prefixed, $shorthand, comma);
|
||||
}
|
||||
}
|
||||
@return $backgrounds-prefixed;
|
||||
}
|
||||
|
||||
//Examples:
|
||||
//@include background(linear-gradient(top, orange, red));
|
||||
//@include background(radial-gradient(circle at 40% 40%, orange, red));
|
||||
//@include background(url("/images/a.png") no-repeat, linear-gradient(orange, red));
|
||||
//@include background(url("image.png") center center, linear-gradient(orange, red), url("image.png"));
|
@ -1,55 +0,0 @@
|
||||
@mixin border-image($images) {
|
||||
-webkit-border-image: _border-add-prefix($images, webkit);
|
||||
-moz-border-image: _border-add-prefix($images, moz);
|
||||
-o-border-image: _border-add-prefix($images, o);
|
||||
border-image: _border-add-prefix($images);
|
||||
}
|
||||
|
||||
@function _border-add-prefix($images, $vendor: false) {
|
||||
$border-image: null;
|
||||
$images-type: type-of(nth($images, 1));
|
||||
$first-var: nth(nth($images, 1), 1); // Get type of Gradient (Linear || radial)
|
||||
|
||||
// If input is a gradient
|
||||
@if $images-type == string {
|
||||
@if ($first-var == "linear") or ($first-var == "radial") {
|
||||
$gradient-type: nth($images, 1); // Get type of gradient (linear || radial)
|
||||
$gradient-pos: nth($images, 2); // Get gradient position
|
||||
$gradient-args: nth($images, 3); // Get actual gradient (red, blue)
|
||||
$gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
|
||||
$border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
|
||||
}
|
||||
// If input is a URL
|
||||
@else {
|
||||
$border-image: $images;
|
||||
}
|
||||
}
|
||||
// If input is gradient or url + additional args
|
||||
@else if $images-type == list {
|
||||
$type: type-of(nth($images, 1)); // Get type of variable - List or String
|
||||
|
||||
// If variable is a list - Gradient
|
||||
@if $type == list {
|
||||
$gradient: nth($images, 1);
|
||||
$gradient-type: nth($gradient, 1); // Get type of gradient (linear || radial)
|
||||
$gradient-pos: nth($gradient, 2); // Get gradient position
|
||||
$gradient-args: nth($gradient, 3); // Get actual gradient (red, blue)
|
||||
$gradient-positions: _gradient-positions-parser($gradient-type, $gradient-pos);
|
||||
$border-image: _render-gradients($gradient-positions, $gradient-args, $gradient-type, $vendor);
|
||||
|
||||
@for $i from 2 through length($images) {
|
||||
$border-image: append($border-image, nth($images, $i));
|
||||
}
|
||||
}
|
||||
}
|
||||
@return $border-image;
|
||||
}
|
||||
|
||||
//Examples:
|
||||
// @include border-image(url("image.png"));
|
||||
// @include border-image(url("image.png") 20 stretch);
|
||||
// @include border-image(linear-gradient(45deg, orange, yellow));
|
||||
// @include border-image(linear-gradient(45deg, orange, yellow) stretch);
|
||||
// @include border-image(linear-gradient(45deg, orange, yellow) 20 30 40 50 stretch round);
|
||||
// @include border-image(radial-gradient(top, cover, orange, yellow, orange));
|
||||
|
@ -1,22 +0,0 @@
|
||||
//************************************************************************//
|
||||
// Shorthand Border-radius mixins
|
||||
//************************************************************************//
|
||||
@mixin border-top-radius($radii) {
|
||||
@include prefixer(border-top-left-radius, $radii, spec);
|
||||
@include prefixer(border-top-right-radius, $radii, spec);
|
||||
}
|
||||
|
||||
@mixin border-bottom-radius($radii) {
|
||||
@include prefixer(border-bottom-left-radius, $radii, spec);
|
||||
@include prefixer(border-bottom-right-radius, $radii, spec);
|
||||
}
|
||||
|
||||
@mixin border-left-radius($radii) {
|
||||
@include prefixer(border-top-left-radius, $radii, spec);
|
||||
@include prefixer(border-bottom-left-radius, $radii, spec);
|
||||
}
|
||||
|
||||
@mixin border-right-radius($radii) {
|
||||
@include prefixer(border-top-right-radius, $radii, spec);
|
||||
@include prefixer(border-bottom-right-radius, $radii, spec);
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
@mixin box-sizing ($box) {
|
||||
// content-box | border-box | inherit
|
||||
@include prefixer(box-sizing, $box, webkit moz spec);
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
@mixin columns($arg: auto) {
|
||||
// <column-count> || <column-width>
|
||||
@include prefixer(columns, $arg, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-count($int: auto) {
|
||||
// auto || integer
|
||||
@include prefixer(column-count, $int, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-gap($length: normal) {
|
||||
// normal || length
|
||||
@include prefixer(column-gap, $length, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-fill($arg: auto) {
|
||||
// auto || length
|
||||
@include prefixer(columns-fill, $arg, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-rule($arg) {
|
||||
// <border-width> || <border-style> || <color>
|
||||
@include prefixer(column-rule, $arg, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-rule-color($color) {
|
||||
@include prefixer(column-rule-color, $color, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-rule-style($style: none) {
|
||||
// none | hidden | dashed | dotted | double | groove | inset | inset | outset | ridge | solid
|
||||
@include prefixer(column-rule-style, $style, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-rule-width ($width: none) {
|
||||
@include prefixer(column-rule-width, $width, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-span($arg: none) {
|
||||
// none || all
|
||||
@include prefixer(column-span, $arg, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin column-width($length: auto) {
|
||||
// auto || length
|
||||
@include prefixer(column-width, $length, webkit moz spec);
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
// CSS3 Flexible Box Model and property defaults
|
||||
|
||||
// Custom shorthand notation for flexbox
|
||||
@mixin box($orient: inline-axis, $pack: start, $align: stretch) {
|
||||
@include display-box;
|
||||
@include box-orient($orient);
|
||||
@include box-pack($pack);
|
||||
@include box-align($align);
|
||||
}
|
||||
|
||||
@mixin display-box {
|
||||
display: -webkit-box;
|
||||
display: -moz-box;
|
||||
display: box;
|
||||
}
|
||||
|
||||
@mixin box-orient($orient: inline-axis) {
|
||||
// horizontal|vertical|inline-axis|block-axis|inherit
|
||||
@include prefixer(box-orient, $orient, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-pack($pack: start) {
|
||||
// start|end|center|justify
|
||||
@include prefixer(box-pack, $pack, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-align($align: stretch) {
|
||||
// start|end|center|baseline|stretch
|
||||
@include prefixer(box-align, $align, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-direction($direction: normal) {
|
||||
// normal|reverse|inherit
|
||||
@include prefixer(box-direction, $direction, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-lines($lines: single) {
|
||||
// single|multiple
|
||||
@include prefixer(box-lines, $lines, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-ordinal-group($int: 1) {
|
||||
@include prefixer(box-ordinal-group, $int, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-flex($value: 0.0) {
|
||||
@include prefixer(box-flex, $value, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin box-flex-group($int: 1) {
|
||||
@include prefixer(box-flex-group, $int, webkit moz spec);
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
// Order of the includes matters, and it is: normal, bold, italic, bold+italic.
|
||||
|
||||
@mixin font-face($font-family, $file-path, $weight: normal, $style: normal, $asset-pipeline: false ) {
|
||||
@font-face {
|
||||
font-family: $font-family;
|
||||
font-weight: $weight;
|
||||
font-style: $style;
|
||||
|
||||
@if $asset-pipeline == true {
|
||||
src: font-url('#{$file-path}.eot');
|
||||
src: font-url('#{$file-path}.eot?#iefix') format('embedded-opentype'),
|
||||
font-url('#{$file-path}.woff') format('woff'),
|
||||
font-url('#{$file-path}.ttf') format('truetype'),
|
||||
font-url('#{$file-path}.svg##{$font-family}') format('svg');
|
||||
} @else {
|
||||
src: url('#{$file-path}.eot');
|
||||
src: url('#{$file-path}.eot?#iefix') format('embedded-opentype'),
|
||||
url('#{$file-path}.woff') format('woff'),
|
||||
url('#{$file-path}.ttf') format('truetype'),
|
||||
url('#{$file-path}.svg##{$font-family}') format('svg');
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
// HiDPI mixin. Default value set to 1.3 to target Google Nexus 7 (http://bjango.com/articles/min-device-pixel-ratio/)
|
||||
@mixin hidpi($ratio: 1.3) {
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: $ratio),
|
||||
only screen and (min--moz-device-pixel-ratio: $ratio),
|
||||
only screen and (-o-min-device-pixel-ratio: #{$ratio}/1),
|
||||
only screen and (min-resolution: #{round($ratio*96)}dpi),
|
||||
only screen and (min-resolution: #{$ratio}dppx) {
|
||||
@content;
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
@mixin image-rendering ($mode:optimizeQuality) {
|
||||
|
||||
@if ($mode == optimize-contrast) {
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: -o-crisp-edges;
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
image-rendering: optimize-contrast;
|
||||
}
|
||||
|
||||
@else {
|
||||
image-rendering: $mode;
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
// Legacy support for inline-block in IE7 (maybe IE6)
|
||||
@mixin inline-block {
|
||||
display: inline-block;
|
||||
vertical-align: baseline;
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
*vertical-align: auto;
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
// Adds keyframes blocks for supported prefixes, removing redundant prefixes in the block's content
|
||||
@mixin keyframes($name) {
|
||||
$original-prefix-for-webkit: $prefix-for-webkit;
|
||||
$original-prefix-for-mozilla: $prefix-for-mozilla;
|
||||
$original-prefix-for-microsoft: $prefix-for-microsoft;
|
||||
$original-prefix-for-opera: $prefix-for-opera;
|
||||
$original-prefix-for-spec: $prefix-for-spec;
|
||||
|
||||
@if $original-prefix-for-webkit {
|
||||
@include disable-prefix-for-all();
|
||||
$prefix-for-webkit: true;
|
||||
@-webkit-keyframes #{$name} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@if $original-prefix-for-mozilla {
|
||||
@include disable-prefix-for-all();
|
||||
$prefix-for-mozilla: true;
|
||||
@-moz-keyframes #{$name} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@if $original-prefix-for-opera {
|
||||
@include disable-prefix-for-all();
|
||||
$prefix-for-opera: true;
|
||||
@-o-keyframes #{$name} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@if $original-prefix-for-spec {
|
||||
@include disable-prefix-for-all();
|
||||
$prefix-for-spec: true;
|
||||
@keyframes #{$name} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
|
||||
$prefix-for-webkit: $original-prefix-for-webkit;
|
||||
$prefix-for-mozilla: $original-prefix-for-mozilla;
|
||||
$prefix-for-microsoft: $original-prefix-for-microsoft;
|
||||
$prefix-for-opera: $original-prefix-for-opera;
|
||||
$prefix-for-spec: $original-prefix-for-spec;
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
@mixin linear-gradient($pos, $G1, $G2: false,
|
||||
$G3: false, $G4: false,
|
||||
$G5: false, $G6: false,
|
||||
$G7: false, $G8: false,
|
||||
$G9: false, $G10: false,
|
||||
$deprecated-pos1: left top,
|
||||
$deprecated-pos2: left bottom,
|
||||
$fallback: false) {
|
||||
// Detect what type of value exists in $pos
|
||||
$pos-type: type-of(nth($pos, 1));
|
||||
$pos-spec: null;
|
||||
$pos-degree: null;
|
||||
|
||||
// If $pos is missing from mixin, reassign vars and add default position
|
||||
@if ($pos-type == color) or (nth($pos, 1) == "transparent") {
|
||||
$G10: $G9; $G9: $G8; $G8: $G7; $G7: $G6; $G6: $G5;
|
||||
$G5: $G4; $G4: $G3; $G3: $G2; $G2: $G1; $G1: $pos;
|
||||
$pos: null;
|
||||
}
|
||||
|
||||
@if $pos {
|
||||
$positions: _linear-positions-parser($pos);
|
||||
$pos-degree: nth($positions, 1);
|
||||
$pos-spec: nth($positions, 2);
|
||||
}
|
||||
|
||||
$full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
|
||||
|
||||
// Set $G1 as the default fallback color
|
||||
$fallback-color: nth($G1, 1);
|
||||
|
||||
// If $fallback is a color use that color as the fallback color
|
||||
@if (type-of($fallback) == color) or ($fallback == "transparent") {
|
||||
$fallback-color: $fallback;
|
||||
}
|
||||
|
||||
background-color: $fallback-color;
|
||||
background-image: _deprecated-webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $full); // Safari <= 5.0
|
||||
background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
|
||||
background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
@mixin perspective($depth: none) {
|
||||
// none | <length>
|
||||
@include prefixer(perspective, $depth, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin perspective-origin($value: 50% 50%) {
|
||||
@include prefixer(perspective-origin, $value, webkit moz spec);
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
$placeholders: '-webkit-input-placeholder',
|
||||
'-moz-placeholder',
|
||||
'-ms-input-placeholder';
|
||||
|
||||
@mixin placeholder {
|
||||
@each $placeholder in $placeholders {
|
||||
@if $placeholder == "-webkit-input-placeholder" {
|
||||
&::#{$placeholder} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@else if $placeholder == "-moz-placeholder" {
|
||||
// FF 18-
|
||||
&:#{$placeholder} {
|
||||
@content;
|
||||
}
|
||||
|
||||
// FF 19+
|
||||
&::#{$placeholder} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@else {
|
||||
&:#{$placeholder} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
// Requires Sass 3.1+
|
||||
@mixin radial-gradient($G1, $G2,
|
||||
$G3: false, $G4: false,
|
||||
$G5: false, $G6: false,
|
||||
$G7: false, $G8: false,
|
||||
$G9: false, $G10: false,
|
||||
$pos: null,
|
||||
$shape-size: null,
|
||||
$deprecated-pos1: center center,
|
||||
$deprecated-pos2: center center,
|
||||
$deprecated-radius1: 0,
|
||||
$deprecated-radius2: 460,
|
||||
$fallback: false) {
|
||||
|
||||
$data: _radial-arg-parser($G1, $G2, $pos, $shape-size);
|
||||
$G1: nth($data, 1);
|
||||
$G2: nth($data, 2);
|
||||
$pos: nth($data, 3);
|
||||
$shape-size: nth($data, 4);
|
||||
|
||||
$full: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
|
||||
|
||||
// Strip deprecated cover/contain for spec
|
||||
$shape-size-spec: _shape-size-stripper($shape-size);
|
||||
|
||||
// Set $G1 as the default fallback color
|
||||
$first-color: nth($full, 1);
|
||||
$fallback-color: nth($first-color, 1);
|
||||
|
||||
@if (type-of($fallback) == color) or ($fallback == "transparent") {
|
||||
$fallback-color: $fallback;
|
||||
}
|
||||
|
||||
// Add Commas and spaces
|
||||
$shape-size: if($shape-size, '#{$shape-size}, ', null);
|
||||
$pos: if($pos, '#{$pos}, ', null);
|
||||
$pos-spec: if($pos, 'at #{$pos}', null);
|
||||
$shape-size-spec: if(($shape-size-spec != ' ') and ($pos == null), '#{$shape-size-spec}, ', '#{$shape-size-spec} ');
|
||||
|
||||
background-color: $fallback-color;
|
||||
background-image: _deprecated-webkit-gradient(radial, $deprecated-pos1, $deprecated-pos2, $full, $deprecated-radius1, $deprecated-radius2); // Safari <= 5.0 && IOS 4
|
||||
background-image: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));
|
||||
background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})");
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
@mixin transform($property: none) {
|
||||
// none | <transform-function>
|
||||
@include prefixer(transform, $property, webkit moz ms o spec);
|
||||
}
|
||||
|
||||
@mixin transform-origin($axes: 50%) {
|
||||
// x-axis - left | center | right | length | %
|
||||
// y-axis - top | center | bottom | length | %
|
||||
// z-axis - length
|
||||
@include prefixer(transform-origin, $axes, webkit moz ms o spec);
|
||||
}
|
||||
|
||||
@mixin transform-style ($style: flat) {
|
||||
@include prefixer(transform-style, $style, webkit moz ms o spec);
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
|
||||
// Example: @include transition (all, 2.0s, ease-in-out);
|
||||
// @include transition ((opacity, width), (1.0s, 2.0s), ease-in, (0, 2s));
|
||||
// @include transition ($property:(opacity, width), $delay: (1.5s, 2.5s));
|
||||
|
||||
@mixin transition ($properties...) {
|
||||
@if length($properties) >= 1 {
|
||||
@include prefixer(transition, $properties, webkit moz spec);
|
||||
}
|
||||
|
||||
@else {
|
||||
$properties: all 0.15s ease-out 0;
|
||||
@include prefixer(transition, $properties, webkit moz spec);
|
||||
}
|
||||
}
|
||||
|
||||
@mixin transition-property ($properties...) {
|
||||
-webkit-transition-property: transition-property-names($properties, 'webkit');
|
||||
-moz-transition-property: transition-property-names($properties, 'moz');
|
||||
transition-property: transition-property-names($properties, false);
|
||||
}
|
||||
|
||||
@mixin transition-duration ($times...) {
|
||||
@include prefixer(transition-duration, $times, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin transition-timing-function ($motions...) {
|
||||
// ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier()
|
||||
@include prefixer(transition-timing-function, $motions, webkit moz spec);
|
||||
}
|
||||
|
||||
@mixin transition-delay ($times...) {
|
||||
@include prefixer(transition-delay, $times, webkit moz spec);
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
@mixin user-select($arg: none) {
|
||||
@include prefixer(user-select, $arg, webkit moz ms spec);
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
// Remove `false` values from a list
|
||||
|
||||
@function compact($vars...) {
|
||||
$list: ();
|
||||
@each $var in $vars {
|
||||
@if $var {
|
||||
$list: append($list, $var, comma);
|
||||
}
|
||||
}
|
||||
@return $list;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
// Flexible grid
|
||||
@function flex-grid($columns, $container-columns: $fg-max-columns) {
|
||||
$width: $columns * $fg-column + ($columns - 1) * $fg-gutter;
|
||||
$container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
|
||||
@return percentage($width / $container-width);
|
||||
}
|
||||
|
||||
// Flexible gutter
|
||||
@function flex-gutter($container-columns: $fg-max-columns, $gutter: $fg-gutter) {
|
||||
$container-width: $container-columns * $fg-column + ($container-columns - 1) * $fg-gutter;
|
||||
@return percentage($gutter / $container-width);
|
||||
}
|
||||
|
||||
// The $fg-column, $fg-gutter and $fg-max-columns variables must be defined in your base stylesheet to properly use the flex-grid function.
|
||||
// This function takes the fluid grid equation (target / context = result) and uses columns to help define each.
|
||||
//
|
||||
// The calculation presumes that your column structure will be missing the last gutter:
|
||||
//
|
||||
// -- column -- gutter -- column -- gutter -- column
|
||||
//
|
||||
// $fg-column: 60px; // Column Width
|
||||
// $fg-gutter: 25px; // Gutter Width
|
||||
// $fg-max-columns: 12; // Total Columns For Main Container
|
||||
//
|
||||
// div {
|
||||
// width: flex-grid(4); // returns (315px / 995px) = 31.65829%;
|
||||
// margin-left: flex-gutter(); // returns (25px / 995px) = 2.51256%;
|
||||
//
|
||||
// p {
|
||||
// width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%;
|
||||
// float: left;
|
||||
// margin: flex-gutter(4); // returns (25px / 315px) = 7.936508%;
|
||||
// }
|
||||
//
|
||||
// blockquote {
|
||||
// float: left;
|
||||
// width: flex-grid(2, 4); // returns (145px / 315px) = 46.031746%;
|
||||
// }
|
||||
// }
|
@ -1,13 +0,0 @@
|
||||
@function grid-width($n) {
|
||||
@return $n * $gw-column + ($n - 1) * $gw-gutter;
|
||||
}
|
||||
|
||||
// The $gw-column and $gw-gutter variables must be defined in your base stylesheet to properly use the grid-width function.
|
||||
//
|
||||
// $gw-column: 100px; // Column Width
|
||||
// $gw-gutter: 40px; // Gutter Width
|
||||
//
|
||||
// div {
|
||||
// width: grid-width(4); // returns 520px;
|
||||
// margin-left: $gw-gutter; // returns 40px;
|
||||
// }
|
@ -1,13 +0,0 @@
|
||||
@function linear-gradient($pos, $gradients...) {
|
||||
$type: linear;
|
||||
$pos-type: type-of(nth($pos, 1));
|
||||
|
||||
// if $pos doesn't exist, fix $gradient
|
||||
@if ($pos-type == color) or (nth($pos, 1) == "transparent") {
|
||||
$gradients: zip($pos $gradients);
|
||||
$pos: false;
|
||||
}
|
||||
|
||||
$type-gradient: $type, $pos, $gradients;
|
||||
@return $type-gradient;
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
@function modular-scale($value, $increment, $ratio) {
|
||||
@if $increment > 0 {
|
||||
@for $i from 1 through $increment {
|
||||
$value: ($value * $ratio);
|
||||
}
|
||||
}
|
||||
|
||||
@if $increment < 0 {
|
||||
$increment: abs($increment);
|
||||
@for $i from 1 through $increment {
|
||||
$value: ($value / $ratio);
|
||||
}
|
||||
}
|
||||
|
||||
@return $value;
|
||||
}
|
||||
|
||||
// div {
|
||||
// Increment Up GR with positive value
|
||||
// font-size: modular-scale(14px, 1, 1.618); // returns: 22.652px
|
||||
//
|
||||
// Increment Down GR with negative value
|
||||
// font-size: modular-scale(14px, -1, 1.618); // returns: 8.653px
|
||||
//
|
||||
// Can be used with ceil(round up) or floor(round down)
|
||||
// font-size: floor( modular-scale(14px, 1, 1.618) ); // returns: 22px
|
||||
// font-size: ceil( modular-scale(14px, 1, 1.618) ); // returns: 23px
|
||||
// }
|
||||
//
|
||||
// modularscale.com
|
||||
|
||||
@function golden-ratio($value, $increment) {
|
||||
@return modular-scale($value, $increment, 1.618)
|
||||
}
|
||||
|
||||
// div {
|
||||
// font-size: golden-ratio(14px, 1); // returns: 22.652px
|
||||
// }
|
||||
//
|
||||
// goldenratiocalculator.com
|
@ -1,8 +0,0 @@
|
||||
// Convert pixels to ems
|
||||
// eg. for a relational value of 12px write em(12) when the parent is 16px
|
||||
// if the parent is another value say 24px write em(12, 24)
|
||||
|
||||
@function em($pxval, $base: 16) {
|
||||
@return ($pxval / $base) * 1em;
|
||||
}
|
||||
|
@ -1,23 +0,0 @@
|
||||
// This function is required and used by the background-image mixin.
|
||||
@function radial-gradient($G1, $G2,
|
||||
$G3: false, $G4: false,
|
||||
$G5: false, $G6: false,
|
||||
$G7: false, $G8: false,
|
||||
$G9: false, $G10: false,
|
||||
$pos: null,
|
||||
$shape-size: null) {
|
||||
|
||||
$data: _radial-arg-parser($G1, $G2, $pos, $shape-size);
|
||||
$G1: nth($data, 1);
|
||||
$G2: nth($data, 2);
|
||||
$pos: nth($data, 3);
|
||||
$shape-size: nth($data, 4);
|
||||
|
||||
$type: radial;
|
||||
$gradient: compact($G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10);
|
||||
|
||||
$type-gradient: $type, $shape-size $pos, $gradient;
|
||||
@return $type-gradient;
|
||||
}
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
// Add percentage of white to a color
|
||||
@function tint($color, $percent){
|
||||
@return mix(white, $color, $percent);
|
||||
}
|
||||
|
||||
// Add percentage of black to a color
|
||||
@function shade($color, $percent){
|
||||
@return mix(black, $color, $percent);
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
// Return vendor-prefixed property names if appropriate
|
||||
// Example: transition-property-names((transform, color, background), moz) -> -moz-transform, color, background
|
||||
//************************************************************************//
|
||||
@function transition-property-names($props, $vendor: false) {
|
||||
$new-props: ();
|
||||
|
||||
@each $prop in $props {
|
||||
$new-props: append($new-props, transition-property-name($prop, $vendor), comma);
|
||||
}
|
||||
|
||||
@return $new-props;
|
||||
}
|
||||
|
||||
@function transition-property-name($prop, $vendor: false) {
|
||||
// put other properties that need to be prefixed here aswell
|
||||
@if $vendor and $prop == transform {
|
||||
@return unquote('-'+$vendor+'-'+$prop);
|
||||
}
|
||||
@else {
|
||||
@return $prop;
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
// Render Deprecated Webkit Gradient - Linear || Radial
|
||||
//************************************************************************//
|
||||
@function _deprecated-webkit-gradient($type,
|
||||
$deprecated-pos1, $deprecated-pos2,
|
||||
$full,
|
||||
$deprecated-radius1: false, $deprecated-radius2: false) {
|
||||
$gradient-list: ();
|
||||
$gradient: false;
|
||||
$full-length: length($full);
|
||||
$percentage: false;
|
||||
$gradient-type: $type;
|
||||
|
||||
@for $i from 1 through $full-length {
|
||||
$gradient: nth($full, $i);
|
||||
|
||||
@if length($gradient) == 2 {
|
||||
$color-stop: color-stop(nth($gradient, 2), nth($gradient, 1));
|
||||
$gradient-list: join($gradient-list, $color-stop, comma);
|
||||
}
|
||||
@else if $gradient != null {
|
||||
@if $i == $full-length {
|
||||
$percentage: 100%;
|
||||
}
|
||||
@else {
|
||||
$percentage: ($i - 1) * (100 / ($full-length - 1)) + "%";
|
||||
}
|
||||
$color-stop: color-stop(unquote($percentage), $gradient);
|
||||
$gradient-list: join($gradient-list, $color-stop, comma);
|
||||
}
|
||||
}
|
||||
|
||||
@if $type == radial {
|
||||
$gradient: -webkit-gradient(radial, $deprecated-pos1, $deprecated-radius1, $deprecated-pos2, $deprecated-radius2, $gradient-list);
|
||||
}
|
||||
@else if $type == linear {
|
||||
$gradient: -webkit-gradient(linear, $deprecated-pos1, $deprecated-pos2, $gradient-list);
|
||||
}
|
||||
@return $gradient;
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
@function _gradient-positions-parser($gradient-type, $gradient-positions) {
|
||||
@if $gradient-positions
|
||||
and ($gradient-type == linear)
|
||||
and (type-of($gradient-positions) != color) {
|
||||
$gradient-positions: _linear-positions-parser($gradient-positions);
|
||||
}
|
||||
@else if $gradient-positions
|
||||
and ($gradient-type == radial)
|
||||
and (type-of($gradient-positions) != color) {
|
||||
$gradient-positions: _radial-positions-parser($gradient-positions);
|
||||
}
|
||||
@return $gradient-positions;
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
@function _linear-positions-parser($pos) {
|
||||
$type: type-of(nth($pos, 1));
|
||||
$spec: null;
|
||||
$degree: null;
|
||||
$side: null;
|
||||
$corner: null;
|
||||
$length: length($pos);
|
||||
// Parse Side and corner positions
|
||||
@if ($length > 1) {
|
||||
@if nth($pos, 1) == "to" { // Newer syntax
|
||||
$side: nth($pos, 2);
|
||||
|
||||
@if $length == 2 { // eg. to top
|
||||
// Swap for backwards compatability
|
||||
$degree: _position-flipper(nth($pos, 2));
|
||||
}
|
||||
@else if $length == 3 { // eg. to top left
|
||||
$corner: nth($pos, 3);
|
||||
}
|
||||
}
|
||||
@else if $length == 2 { // Older syntax ("top left")
|
||||
$side: _position-flipper(nth($pos, 1));
|
||||
$corner: _position-flipper(nth($pos, 2));
|
||||
}
|
||||
|
||||
@if ("#{$side} #{$corner}" == "left top") or ("#{$side} #{$corner}" == "top left") {
|
||||
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
||||
}
|
||||
@else if ("#{$side} #{$corner}" == "right top") or ("#{$side} #{$corner}" == "top right") {
|
||||
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
||||
}
|
||||
@else if ("#{$side} #{$corner}" == "right bottom") or ("#{$side} #{$corner}" == "bottom right") {
|
||||
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
||||
}
|
||||
@else if ("#{$side} #{$corner}" == "left bottom") or ("#{$side} #{$corner}" == "bottom left") {
|
||||
$degree: _position-flipper(#{$side}) _position-flipper(#{$corner});
|
||||
}
|
||||
$spec: to $side $corner;
|
||||
}
|
||||
@else if $length == 1 {
|
||||
// Swap for backwards compatability
|
||||
@if $type == string {
|
||||
$degree: $pos;
|
||||
$spec: to _position-flipper($pos);
|
||||
}
|
||||
@else {
|
||||
$degree: -270 - $pos; //rotate the gradient opposite from spec
|
||||
$spec: $pos;
|
||||
}
|
||||
}
|
||||
$degree: unquote($degree + ",");
|
||||
$spec: unquote($spec + ",");
|
||||
@return $degree $spec;
|
||||
}
|
||||
|
||||
@function _position-flipper($pos) {
|
||||
@return if($pos == left, right, null)
|
||||
if($pos == right, left, null)
|
||||
if($pos == top, bottom, null)
|
||||
if($pos == bottom, top, null);
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
@function _radial-arg-parser($G1, $G2, $pos, $shape-size) {
|
||||
@each $value in $G1, $G2 {
|
||||
$first-val: nth($value, 1);
|
||||
$pos-type: type-of($first-val);
|
||||
$spec-at-index: null;
|
||||
|
||||
// Determine if spec was passed to mixin
|
||||
@if type-of($value) == list {
|
||||
$spec-at-index: if(index($value, at), index($value, at), false);
|
||||
}
|
||||
@if $spec-at-index {
|
||||
@if $spec-at-index > 1 {
|
||||
@for $i from 1 through ($spec-at-index - 1) {
|
||||
$shape-size: $shape-size nth($value, $i);
|
||||
}
|
||||
@for $i from ($spec-at-index + 1) through length($value) {
|
||||
$pos: $pos nth($value, $i);
|
||||
}
|
||||
}
|
||||
@else if $spec-at-index == 1 {
|
||||
@for $i from ($spec-at-index + 1) through length($value) {
|
||||
$pos: $pos nth($value, $i);
|
||||
}
|
||||
}
|
||||
$G1: false;
|
||||
}
|
||||
|
||||
// If not spec calculate correct values
|
||||
@else {
|
||||
@if ($pos-type != color) or ($first-val != "transparent") {
|
||||
@if ($pos-type == number)
|
||||
or ($first-val == "center")
|
||||
or ($first-val == "top")
|
||||
or ($first-val == "right")
|
||||
or ($first-val == "bottom")
|
||||
or ($first-val == "left") {
|
||||
|
||||
$pos: $value;
|
||||
|
||||
@if $pos == $G1 {
|
||||
$G1: false;
|
||||
}
|
||||
}
|
||||
|
||||
@else if
|
||||
($first-val == "ellipse")
|
||||
or ($first-val == "circle")
|
||||
or ($first-val == "closest-side")
|
||||
or ($first-val == "closest-corner")
|
||||
or ($first-val == "farthest-side")
|
||||
or ($first-val == "farthest-corner")
|
||||
or ($first-val == "contain")
|
||||
or ($first-val == "cover") {
|
||||
|
||||
$shape-size: $value;
|
||||
|
||||
@if $value == $G1 {
|
||||
$G1: false;
|
||||
}
|
||||
|
||||
@else if $value == $G2 {
|
||||
$G2: false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@return $G1, $G2, $pos, $shape-size;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
@function _radial-positions-parser($gradient-pos) {
|
||||
$shape-size: nth($gradient-pos, 1);
|
||||
$pos: nth($gradient-pos, 2);
|
||||
$shape-size-spec: _shape-size-stripper($shape-size);
|
||||
|
||||
$pre-spec: unquote(if($pos, "#{$pos}, ", null))
|
||||
unquote(if($shape-size, "#{$shape-size},", null));
|
||||
$pos-spec: if($pos, "at #{$pos}", null);
|
||||
|
||||
$spec: "#{$shape-size-spec} #{$pos-spec}";
|
||||
|
||||
// Add comma
|
||||
@if ($spec != ' ') {
|
||||
$spec: "#{$spec},"
|
||||
}
|
||||
|
||||
@return $pre-spec $spec;
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
// User for linear and radial gradients within background-image or border-image properties
|
||||
|
||||
@function _render-gradients($gradient-positions, $gradients, $gradient-type, $vendor: false) {
|
||||
$pre-spec: null;
|
||||
$spec: null;
|
||||
$vendor-gradients: null;
|
||||
@if $gradient-type == linear {
|
||||
@if $gradient-positions {
|
||||
$pre-spec: nth($gradient-positions, 1);
|
||||
$spec: nth($gradient-positions, 2);
|
||||
}
|
||||
}
|
||||
@else if $gradient-type == radial {
|
||||
$pre-spec: nth($gradient-positions, 1);
|
||||
$spec: nth($gradient-positions, 2);
|
||||
}
|
||||
|
||||
@if $vendor {
|
||||
$vendor-gradients: -#{$vendor}-#{$gradient-type}-gradient(#{$pre-spec} $gradients);
|
||||
}
|
||||
@else if $vendor == false {
|
||||
$vendor-gradients: "#{$gradient-type}-gradient(#{$spec} #{$gradients})";
|
||||
$vendor-gradients: unquote($vendor-gradients);
|
||||
}
|
||||
@return $vendor-gradients;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
@function _shape-size-stripper($shape-size) {
|
||||
$shape-size-spec: null;
|
||||
@each $value in $shape-size {
|
||||
@if ($value == "cover") or ($value == "contain") {
|
||||
$value: null;
|
||||
}
|
||||
$shape-size-spec: "#{$shape-size-spec} #{$value}";
|
||||
}
|
||||
@return $shape-size-spec;
|
||||
}
|
@ -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();
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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 + ')';
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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})';
|
||||
}
|
@ -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})'
|
||||
}
|
@ -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})';
|
||||
}
|
@ -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;
|
||||
}
|
@ -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}';
|
||||
}
|
||||
}
|
@ -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})';
|
||||
}
|
@ -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
@ -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;
|
||||
}
|
||||
|
||||
*/
|
@ -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;
|
||||
}
|
||||
}
|
396
core/clientold/assets/sass/modules/normalize.scss
vendored
396
core/clientold/assets/sass/modules/normalize.scss
vendored
@ -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;
|
||||
}
|
@ -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. */
|
@ -10,9 +10,7 @@ var _ = require('lodash'),
|
||||
// Paths for views
|
||||
defaultErrorTemplatePath = path.resolve(config().paths.adminViews, 'user-error.hbs'),
|
||||
userErrorTemplatePath = path.resolve(config().paths.themePath, 'error.hbs'),
|
||||
userErrorTemplateExists = false,
|
||||
|
||||
ONE_HOUR_S = 60 * 60;
|
||||
userErrorTemplateExists = false;
|
||||
|
||||
// This is not useful but required for jshint
|
||||
colors.setTheme({silly: 'rainbow'});
|
||||
@ -201,8 +199,8 @@ errors = {
|
||||
error404: function (req, res, next) {
|
||||
var message = res.isAdmin && req.session.user ? "No Ghost Found" : "Page Not Found";
|
||||
|
||||
// 404 errors should be briefly cached
|
||||
res.set({'Cache-Control': 'public, max-age=' + ONE_HOUR_S});
|
||||
// do not cache 404 error
|
||||
res.set({'Cache-Control': 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'});
|
||||
if (req.method === 'GET') {
|
||||
this.renderErrorPage(404, message, req, res, next);
|
||||
} else {
|
||||
|
@ -90,8 +90,8 @@ GhostMailer.prototype.fromAddress = function () {
|
||||
domain = config().url.match(new RegExp("^https?://([^/:?#]+)(?:[/:?#]|$)", "i"));
|
||||
domain = domain && domain[1];
|
||||
|
||||
// Default to webmaster@[blog.url]
|
||||
from = 'webmaster@' + domain;
|
||||
// Default to ghost@[blog.url]
|
||||
from = 'ghost@' + domain;
|
||||
}
|
||||
|
||||
return from;
|
||||
|
@ -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"}}">
|
||||
|
||||
|
@ -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}}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user