0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-04-15 03:01:37 -05:00

REFACTOR THE THINGS

This commit is contained in:
John O'Nolan 2014-03-11 23:23:42 +00:00
parent 2dbb2c0c17
commit 2f9239f72b
22 changed files with 1530 additions and 1688 deletions

View file

@ -1,17 +1,6 @@
/*
* These styles control elements specific to the Ghost admin login / signup screens.
*
* Table of Contents:
*
* 0. General
* 1. Login
* 2. Signup
*
*/
/* =============================================================================
0. General
============================================================================= */
//
// Auth - Login / Signup / Reset Password
// --------------------------------------------------
.ghost-login,
.ghost-signup,

View file

@ -1,18 +1,6 @@
/*
* 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
============================================================================= */
//
// Content Management
// --------------------------------------------------
.manage {
.content-view-container {

View file

@ -1,20 +1,6 @@
/*
* 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
============================================================================= */
//
// The Editor
// --------------------------------------------------
.editor {

View file

@ -1,15 +1,7 @@
/*
* These styles control elements specific to the error screens
*
* Table of Contents:
*
* General
* 404
*/
//
// Error Pages
// --------------------------------------------------
/* =============================================================================
General
============================================================================= */
.error-content {
max-width: 530px;
margin: 0 auto;

View file

@ -1,19 +1,6 @@
/*
* These styles control elements specific to the settings screen
* used for configuring your Ghost install.
*
* Table of Contents:
*
* General
* Sidebar
* Content
*
*/
/* =============================================================================
Settings
============================================================================= */
//
// Settings
// --------------------------------------------------
.settings {
// The main white bg for the page

View file

@ -1,6 +1,6 @@
/* =============================================================================
Users List
============================================================================= */
//
// Users
// --------------------------------------------------
.settings {

View file

@ -1,15 +1,6 @@
/*
* Specific styles for re-usable animations in Ghost admin.
*
* Table of Contents:
*
*
*/
/* =============================================================================
General
============================================================================= */
//
// Animations
// --------------------------------------------------
@-webkit-keyframes off-canvas {
0% { left:0; }

View file

@ -0,0 +1,297 @@
//
// 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
.btn {
@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.
line-height: 13px; // Hack because Firefox sucks.
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 .btn;
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 .btn;
background: $blue;
box-shadow: none;
&:hover {background: darken($blue, 10%);}
}
// Button for actions which add stuff
.button-add {
@extend .btn;
background: $green;
&:hover {background: darken($green, 8%);}
}
// Button for deleting/removing stuff
.button-delete,
button[type="reset"],
input[type="reset"] {
@extend .btn;
background: $red;
box-shadow: none;
&:hover {background: darken($red, 10%);}
}
// Alternative button with more visual attention, but no extra semantic meaning
.button-alt {
@extend .btn;
background: lighten($darkgrey, 10%);
&:hover {background: $darkgrey;}
}
// This applies normal link styles to de-emphasise a button
.button-link {
@extend .btn;
color: $blue;
background: transparent;
border: none;
&:hover {
background: transparent;
text-decoration: underline;
}
}
// Back button for pane animations
.button-back {
@extend .btn;
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
.splitbtn {
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 .splitbtn;
.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 .splitbtn;
.options {
background: darken($blue, 5%);
&:hover, &.active {background: darken($blue, 10%);}
}
}
// For actions which add something
.splitbutton-add {
@extend .splitbtn;
.options {
background: darken($green, 6%);
&:hover {background: darken($green, 8%);}
}
}
// For actions which delete something
.splitbutton-delete {
@extend .splitbtn;
.options {
background: darken($red, 6%);
&:hover {background: darken($red, 10%);}
}
}
// Alternative style with more visual attention, but no extra semantic meaning
.splitbutton-alt {
@extend .splitbtn;
.options {
background: lighten($darkgrey, 4%);
&:hover {background: $darkgrey;}
}
}

View file

@ -0,0 +1,52 @@
//
// Code (inline and block)
// --------------------------------------------------
code, tt {
font-family: $font-family-mono;
font-size: 0.85em;
white-space: pre-wrap;
background: lighten($lightbrown, 2%);
border: 1px solid darken($lightbrown, 8%);
border-radius: 2px;
padding: 1px 3px;
}
pre {
@include baseline;
@include box-sizing(border-box);
background: lighten($lightbrown, 2%);
border: 1px solid darken($lightbrown, 8%);
width: 100%;
padding: 10px;
font-family: $font-family-mono;
font-size: 0.9em;
white-space: pre;
overflow: auto;
border-radius: 3px;
code, tt {
font-size: inherit;
white-space: -moz-pre-wrap;
white-space: pre-wrap;
background: transparent;
border: none;
padding: 0;
}
}
kbd {
display: inline-block;
margin-bottom: 0.4em;
padding: 1px 8px;
border: #ccc 1px solid;
color: $darkgrey;
text-shadow: #fff 0 1px 0;
font-size: 0.9em;
font-weight: bold;
background: #f4f4f4;
border-radius: 4px;
box-shadow:
0 1px 0 rgba(0, 0, 0, 0.2),
0 1px 0 0 #fff inset;
}

View file

@ -0,0 +1,214 @@
//
// Dropdowns
// --------------------------------------------------
.dropdown {
@include icon-after($i-chevron-down, 8px) {
padding-left: 6px;
vertical-align: 0;
};
&.active {
color: $darkgrey;
@include icon-after($i-chevron-down, 8px);
}
}
// This is the base menu extend used for styles on interaction menus
// Default: Pop menu, chiclet bottom center.
.menu {
display: inline-block;
position:absolute;
z-index: 960;
padding:6px 0;
border:none;
list-style: none;
color: $lightgrey;
background: $darkgrey;
border-radius: 3px;
box-shadow: rgba(0,0,0,0.5) 0 1px 15px;
// The triangle chiclet that points to where the menu came from
// By default, this is bottom center.
&:before {
content:"";
position:absolute;
bottom:-10px;
left:50%;
margin-left:-10px;
border-width:10px 10px 0 10px;
border-style:solid;
border-color:$darkgrey transparent;
display:block;
width:0;
}
li {overflow:hidden;} // Stop :hover shadow from overflowing
a, p {
@include box-sizing(border-box);
display: block;
position: relative;
padding:10px 25px 10px 35px;
border: none;
@include box-sizing(border-box);
color: $lightgrey !important; // It's dirty, but it's needed.
text-transform: none;
text-decoration: none;
&:hover {
background: $blue;
box-shadow:
rgba(255,255,255,0.2) 0 1px 0 inset,
rgba(0,0,0,0.5) 0 1px 5px;
}
}
// Add a check mark to the currently active menu item
.active a {
@include icon($i-check) {
position: absolute;
top: 14px;
left: 11px;
}
}
}
// This extend moves the chiclet to the top, for menus which drop down.
.menu-drop {
@extend .menu;
&:before {
top: -10px;
bottom: auto;
border-width:0 10px 10px 10px;
}
}
// Chiclet to the left, for menus appearing close to left edge of the screen.
.menu-left {
@extend .menu;
&:before {
left:10px;
margin-left:0;
}
}
// Chiclet to the right, for menus appearing close to right edge of the screen.
.menu-right {
@extend .menu;
&:before {
left: auto;
right:10px;
margin-left:0;
}
}
// Drop left, chiclet top left.
.menu-drop-left {
@extend .menu;
@extend .menu-drop;
@extend .menu-left;
}
// Drop right, chiclet top right.
.menu-drop-right {
@extend .menu;
@extend .menu-drop;
@extend .menu-right;
}
/* ==========================================================================
Post Settings
========================================================================== */
.post-settings {
@include icon($i-settings, 14px);
@include box-sizing(border-box);
display: inline-block;
padding: 0 10px;
color: $midgrey;
@include transition;
position: relative;
top: 1px;
&:hover,
&.active {
color: $darkgrey;
}
}
.post-settings-menu {
padding-top: 0;
text-transform: none;
table {
margin: 0;
}
td {
padding: 0;
border-top: none;
border-bottom: lighten($grey, 5%) 1px solid;
}
.post-setting-label {
padding: 8px 10px 8px 15px;
border-right: lighten($grey, 5%) 1px solid;
text-align: right;
}
.label {
position: static;
width: auto;
font-weight: normal;
color: $midgrey;
white-space: nowrap;
}
input {
width: 200px;
margin: 0;
@include breakpoint(550px) { width: 200px; }
&[type="text"] {
border: none;
padding: 8px 0 8px 10px;
color: $lightgrey;
border-radius: 0;
background: transparent;
&:focus {
background: $grey;
border: none;
}
}
}
.post-setting-item {
padding: 5px 0 0 10px;
}
.checkbox {
position: relative;
margin-top: 0;
width: 18px;
border: lighten($grey, 10%) 1px solid;
background: $grey;
}
.delete {
display: block;
padding: 10px 15px;
@include icon($i-trash) {
position: relative;
top: -1px;
margin-right: 10px
};
&:hover { background: $red; }
}
}

View file

@ -1,20 +1,6 @@
/*
* 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
============================================================================= */
//
// Forms
// --------------------------------------------------
.label {
display: inline-block;
@ -186,304 +172,4 @@ input[type="checkbox"] {
// 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
.btn {
@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.
line-height: 13px; // Hack because Firefox sucks.
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 .btn;
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 .btn;
background: $blue;
box-shadow: none;
&:hover {background: darken($blue, 10%);}
}
// Button for actions which add stuff
.button-add {
@extend .btn;
background: $green;
&:hover {background: darken($green, 8%);}
}
// Button for deleting/removing stuff
.button-delete,
button[type="reset"],
input[type="reset"] {
@extend .btn;
background: $red;
box-shadow: none;
&:hover {background: darken($red, 10%);}
}
// Alternative button with more visual attention, but no extra semantic meaning
.button-alt {
@extend .btn;
background: lighten($darkgrey, 10%);
&:hover {background: $darkgrey;}
}
// This applies normal link styles to de-emphasise a button
.button-link {
@extend .btn;
color: $blue;
background: transparent;
border: none;
&:hover {
background: transparent;
text-decoration: underline;
}
}
// Back button for pane animations
.button-back {
@extend .btn;
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
.splitbtn {
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 .splitbtn;
.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 .splitbtn;
.options {
background: darken($blue, 5%);
&:hover, &.active {background: darken($blue, 10%);}
}
}
// For actions which add something
.splitbutton-add {
@extend .splitbtn;
.options {
background: darken($green, 6%);
&:hover {background: darken($green, 8%);}
}
}
// For actions which delete something
.splitbutton-delete {
@extend .splitbtn;
.options {
background: darken($red, 6%);
&:hover {background: darken($red, 10%);}
}
}
// Alternative style with more visual attention, but no extra semantic meaning
.splitbutton-alt {
@extend .splitbtn;
.options {
background: lighten($darkgrey, 4%);
&:hover {background: $darkgrey;}
}
}
input[type=checkbox]:checked + .checkbox:after { opacity: 1; }

File diff suppressed because it is too large Load diff

View file

@ -1,20 +1,9 @@
/*
* 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
*/
//
// Icons - Pictos, by Drew Wilson
// --------------------------------------------------
/* =============================================================================
The Font Face
============================================================================= */
// The Font Face
// Generated by icomoon.co
@font-face {
font-family: 'Icons';
@ -28,10 +17,7 @@
}
/* =============================================================================
The Icon Element
============================================================================= */
// The Icon Element
@mixin icon($char, $size: '', $color: '') {
&:before {
// Base
@ -60,11 +46,8 @@
}
}
/*
* Special use case for when we want to add an icon after an element rather
* than before it. For things like dropdowns.
*/
// 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
@ -94,16 +77,12 @@
}
/* =============================================================================
Icon Variables / Short Names
============================================================================= */
// 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.
*/
// 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;
@ -173,9 +152,7 @@ $i-weather-cloudy: \e03c;
$i-lightning: \e03d;
/* =============================================================================
Usage
=============================================================================
/* Usage
To create a button with a label that is prefixed with a camera icon, we might
write our Sass something like this:

View file

@ -0,0 +1,147 @@
//
// Modals
// --------------------------------------------------
#modal-container { // TODO: This should probably not be an ID
@include box-sizing(border-box);
display: none;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow-x: auto;
overflow-y: scroll;
z-index: 1040;
pointer-events: none;
@include transition(all 0.15s linear 0s);
@include transform(translateZ(0));
}
.fade {
opacity: 0;
@include transition(opacity 0.2s linear 0s);
@include transform(translateZ(0));
&.in {
opacity: 1;
}
}
.modal-background {
display: none;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.4);
z-index: 1030;
}
.modal {
@include box-sizing(border-box);
left: 50%;
right: auto;
width: 450px;
margin-left: auto;
margin-right: auto;
padding-top: 30px;
padding-bottom: 30px;
z-index: 1050;
pointer-events: auto;
@include breakpoint($tablet) {
width: auto;
padding: 10px;
};
button {
min-width: 100px;
}
@include breakpoint($tablet) {
width: 100%;
margin-left: 0;
}
//Uploaders
.image-uploader,
.pre-image-uploader {
margin: 0;
}
}
.modal-action {
@extend .modal;
padding: 60px 0 30px;
@include breakpoint($tablet) {
padding: 30px 0;
}
}
.modal-content {
@include box-sizing(padding-box);
position: relative;
padding: 20px;
background-clip: padding-box;
background-color: #FFFFFF;
border-radius: $rounded;
box-shadow: rgba(0,0,0,0.2) 0 0 0 6px;
.close {
@include box-sizing(border-box);
position: absolute;
top: 15px;
right: 15px;
width: 16px;
min-height: 16px;
padding: 0;
margin: 0;
border: none;
z-index: 9999;
@include icon($i-x, 1em, $midgrey);
@include transition(opacity 0.3s linear);
&:hover {
color: $darkgrey;
}
}
}
.modal-header {
position: relative;
padding: 20px;
border-bottom: 1px solid $lightbrown;
h1 {
display: inline-block;
margin: 0;
font-size: 1.5em;
font-weight: bold;
}
}
.modal-body {
position: relative;
min-height: 100px;
overflow-y: auto;
}
.modal-footer {
margin-top: 20px;
}
.modal-style-wide {
width: 550px;
@include breakpoint($tablet) {
width: 100%;
}
}
.modal-style-centered {
text-align: center;
}

View file

@ -0,0 +1,306 @@
//
// Navbar
// --------------------------------------------------
.ghost-logo {
@include icon($i-ghost) { line-height: 0; }
display: block;
float:left;
height:40px;
padding:12px 15px;
color: lighten($grey, 10%);
@include box-sizing(border-box);
&:hover {text-decoration:none;}
}
.ghost-logo:hover {
color: $lightgrey;
background:darken($darkgrey, 2%);
}
.navbar {
height: 40px;
font-size: 0.85em;
background: $darkgrey;
@include breakpoint($netbook) {font-weight:normal}
// The main navbar styles, apply to to everything.
nav {
ul {
float:left;
border-left:$grey 1px solid;
border-top:none;
}
li {
float:left;
font-size: 1em;
position:relative;
border-right:$grey 1px solid;
a {
display: block;
height:40px;
padding:11px 15px;
border-bottom:none;
color: $midgrey;
text-transform: uppercase;
@include box-sizing(border-box);
}
a:hover,
&.active a {
color: $lightgrey;
text-decoration: none;
position:relative;
background:darken($grey, 2%);
box-shadow: 0 -2px 2px rgba(0,0,0,0.2) inset;
}
// Make a little arrow pointing up at the currently active menu item
&.active a:after {
content:"";
position:absolute;
bottom:0;
left:50%;
margin-left:-5px;
border-width:0 5px 5px 5px;
border-style:solid;
border-color:$lightbrown transparent;
display:block;
width:0;
@include breakpoint($mobile) {
border-color: #fff transparent;
}
}
ul {
position: absolute;
top:40px;
right:0;
min-width:200px;
background: $darkgrey;
}
li {
width: 100%;
border-right: none;
}
}
// Add some icons to specific nav items
a:before {margin-right: 5px;}
.dashboard a { @include icon($i-stats) {vertical-align: -10%} }
.content a { @include icon($i-content) }
.editor a { @include icon($i-add) }
.settings a { @include icon($i-settings2) }
}//nav ul
// Style any nav items which have dropdowns
.subnav {
position: relative;
// The anchor which toggles the menu open/closed
> a {
@include icon-after($i-chevron-down, 8px) {margin-left: 8px};
&.active {
color: $lightgrey;
background: darken($grey, 3%);
@include transition(none);
box-shadow: none;
}
}
// The dropdown menu
ul {
display: none;
padding: 7px 0;
border-left: none;
position: absolute;
top:40px;
left:-1px;
z-index: 800;
background:darken($grey, 3%);
box-shadow: rgba(0,0,0,0.2) 0 4px 6px;
}
li {
a {
color: $lightgrey;
&:hover {
background: darken($darkgrey, 10%);
@include transition(none);
box-shadow: none;
}
&:before { margin-right: 1em; } // space for icons
}
}
.divider {
height: 1px;
margin: 7px 0;
overflow: hidden;
background: $grey;
}
}//.subnav
}//.navbar
// The user menu in the top right corner of the screen
.usermenu.subnav {
position:absolute;
top:0;
right:0;
border-right:none;
border-left:$grey 1px solid;
> a {
padding-left:43px; //15px + 18px avatar + 10px
}
.avatar {
height:18px;
width:18px;
border-radius: 50px;
position:absolute;
top:11px;
left:15px;
}
> ul {
right: 0;
left: auto;
}
//Add some icons to specific items
.usermenu-profile a { @include icon($i-user) }
.usermenu-help a { @include icon($i-support, 1.1em) }
.usermenu-shortcuts a { @include icon($i-pc) }
.usermenu-signout a { @include icon($i-power) }
}
/* ==========================================================================
Mobile Navigation
========================================================================== */
// Yo dawg, I heard you like nav menus so I put nav menus in your nav menus
#global-header {
@include breakpoint(650px) {
.ghost-logo {
@include icon($i-menu, 14px);
height:40px;
width: 40px;
text-align: center;
padding:12px 0;
@include transition(margin-left 0.3s ease 0s);
.off-canvas & {
margin-left: 280px;
@include transition(margin-left 0.3s ease 0.1s);
}
}
ul {
position: fixed;
overflow: auto;
top: 0;
right: auto;
bottom: 0;
left: -280px;
z-index: 980;
width: 280px;
padding-top: 40px;
font-weight:normal;
background: $darkgrey;
border-left:none;
@include transition(left 0.3s ease 0.2s);
.off-canvas & {
left: 0;
@include transition(left 0.3s ease 0s);
}
}
li {
float:none;
border-right:none;
border-bottom:$grey 1px solid;
a:hover,
&.active a {box-shadow: none;}
&.active a:after {display:none;}
a:before {margin-right: 1em;}
ul {
position: static;
min-width:0;
background: $darkgrey;
}
li {width: auto;}
}
.usermenu {
position:fixed;
top:0;
right:auto;
bottom: auto;
left:-280px;
height:40px;
z-index: 990;
width:279px;
border-left:none;
border-right: darken($grey, 7%) 1px solid;
border-bottom: darken($grey, 5%) 1px solid;
@include gradient(darken($darkgrey, 8%), darken($darkgrey, 3%));
@include transition(left 0.3s ease 0.2s);
.off-canvas & {
left: 0;
@include transition(left 0.3s ease 0s);
}
> a {
&:hover { background: inherit; }
&.active { background: darken($grey, 3%); }
}
> ul {
padding: 0;
box-shadow: none;
width: 100%;
font-weight: 300;
}
.open {
box-shadow: rgba(0,0,0,0.4) 0 10px 20px;
}
li {
border-bottom: darken($grey, 3%) 1px solid;
a {
background: darken($grey, 3%);
&:hover {background: darken($grey, 8%)}
&:before { margin-right: 1em; } // space for icons
}
}
.divider {display: none}
}
}
}

View file

@ -0,0 +1,30 @@
//
// Navigation Menus
// --------------------------------------------------
nav {
ul {
list-style: none;
margin:0;
padding:0;
border-top:$lightbrown 1px solid;
}
li {
a {
display:block;
padding:10px 15px;
color:$brown;
border-bottom:$lightbrown 1px solid;
&:hover {
color:$darkgrey;
background: $lightbrown;
text-decoration: none;
}
&:before { margin-right:1em; } // Make space for icons
}
}
}

View file

@ -0,0 +1,108 @@
//
// Notifications
// --------------------------------------------------
.notifications {
@include breakpoint($biggerthan-mobile) {
position: absolute;
bottom: 0;
left: 0;
z-index: 980;
width: 300px;
}
@include breakpoint($mobile) {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 9999;
}
}
.js-bb-notification {
@include transform(translateZ(0));
}
.notification {
@include icon($i-notification) {
position: absolute;
top: 0;
left: 0;
@include box-sizing(border-box);
height: 100%;
width: 44px;
padding: 14px 15px;
text-align: center;
color: rgba(255,255,255,0.8);
background: rgba(0,0,0,0.1);
};
@include box-sizing(border-box);
width: 100%;
min-height: 40px;
padding: 10px 43px 10px 57px;
margin: 0 0 15px 0;
color: rgba(255,255,255,0.9);
background: $blue;
position:relative;
box-shadow: $shadow;
@include transform(translateZ(0));
@include breakpoint($mobile) {margin-bottom: 1px;}
.close {
@include icon-after($i-close) {
padding:6px;
position:absolute;
top:8px;
right:9px;
};
display: inline-block;
color: rgba(255,255,255,0.6);
cursor: pointer;
&:hover { color: #fff; }
}
a {
color: inherit;
text-decoration: underline;
}
}
.notification-success {
@extend .notification;
@include icon($i-success);
background: $green;
&.notification-passive {
@include animation(fade-out 1s linear);
@include animation-delay(3s);
@include animation-iteration-count(1);
@include animation-fill-mode(forwards);
}
}
.notification-error {
@extend .notification;
@include icon($i-error);
background: $red;
}
.notification-warn {
@extend .notification;
@include icon($i-info);
background: $orange;
}
.notification-info {
@extend .notification;
@include icon($i-info);
background: $blue;
}
// Hide extra space taken up by update notification
.update-available main {
bottom: 56px;
}

View file

@ -0,0 +1,47 @@
//
// Tables
// --------------------------------------------------
table {
@include baseline;
@include box-sizing(border-box);
width:100%;
max-width: 100%;
background-color: transparent;
th,
td {
padding: 8px;
line-height: 20px;
text-align: left;
vertical-align: middle;
border-top: 1px solid $lightbrown;
}
th { color: $brown; }
caption + thead tr:first-child th,
caption + thead tr:first-child td,
colgroup + thead tr:first-child th,
colgroup + thead tr:first-child td,
thead:first-child tr:first-child th,
thead:first-child tr:first-child td {
border-top: 0;
}
tbody + tbody { border-top: 2px solid $lightbrown; }
table table { background-color: #fff; }
tbody > tr:nth-child(odd) > td,
tbody > tr:nth-child(odd) > th {
background-color: lighten($lightbrown, 5%);
}
&.plain {
tbody > tr:nth-child(odd) > td,
tbody > tr:nth-child(odd) > th {
background: transparent;
}
}
}

View file

@ -0,0 +1,204 @@
//
// Image Uploader
// --------------------------------------------------
.image-uploader {
@include box-sizing(border-box);
@include baseline;
position: relative;
overflow:hidden;
padding: 55px 60px;
border: $lightbrown 3px dashed;
width: 100%;
height: auto;
text-align: center;
color: $brown;
background: #F9F8F5;
a {
color: $brown;
text-decoration: none;
&:hover {
color: $darkgrey;
}
}
.description {
margin-top: 10px;
}
.media {
@include icon($i-image, 60px, darken($lightbrown, 3%)) {
display: inline-block;
vertical-align: initial;
@include transition(transform 1s ease);
}
}
.image-url,
.image-upload {
line-height: 12px;
padding: 10px;
display: block;
position: absolute;
bottom: 0;
left: 0;
color: $brown;
text-decoration: none;
@include user-select(none);
&:hover {
cursor: pointer;
}
}
.image-webcam {
@include icon($i-camera, 12px);
}
.image-url {
@include icon($i-link, 12px);
}
.image-upload {
@include icon($i-image, 12px);
}
.button-add {
display: inline-block;
position:relative;
z-index: 700;
color: #fff;
padding-left:5px;
}
.button-save {
margin: 0 0 0 10px;
}
input {
&.main{
position: absolute;
right: 0;
margin: 0;
opacity: 0;
@include transform-origin(right);
@include transform( scale(14));
font-size: 23px;
direction: ltr;
cursor: pointer;
&.right {
right: 9999px;
height: 0;
}
}
&.url{
font: -webkit-small-control;
box-sizing: border-box;
width: 276px;
vertical-align: middle;
padding: 9px 7px;
margin: 10px 0;
outline: 0;
font-size: 1.1em;
background: #fff;
border: #e3e1d5 1px solid;
border-radius: 4px;
-webkit-transition: all 0.15s ease-in-out;
-moz-transition: all 0.15s ease-in-out;
}
}
.progress {
position: relative;
margin: -19px 0 44px 0;
display: block;
overflow: hidden;
@include linear-gradient(to bottom, #f5f5f5, #f9f9f9);
border-radius: 12px;
box-shadow: (rgba(0,0,0,0.1) 0 1px 2px inset);
}
.fileupload-loading {
display: block;
top: 50%;
width: 35px;
height: 28px;
margin: -28px auto 0;
background-size: contain;
}
.failed {
position: relative;
top: -40px;
font-size: 16px;
}
.bar {
height: 12px;
background: $blue;
&.fail {
background: $red;
}
}
}
.pre-image-uploader {
@include box-sizing(border-box);
@include baseline;
position: relative;
overflow: hidden;
height: auto;
color: $brown;
background: rgba(0,0,0,0.1);
border-radius: 2px;
min-height: 46px;
input {
position: absolute;
left: 9999px;
opacity: 0;
}
a {
z-index: 10000;
color: $brown;
text-decoration: none;
&:hover {
color: $darkgrey;
}
}
img {
display: block;
max-width: 100%;
margin: 0 auto;
line-height: 0;
}
.image-cancel {
@include icon($i-trash, 11px);
position: absolute;
top: 10px;
right: 10px;
padding: 8px;
z-index: 300;
color: #fff;
text-decoration: none;
line-height: 0;
border-radius: $rounded;
background: rgba(0,0,0,0.6);
box-shadow: rgba(255,255,255,0.2) 0 0 0 1px;
&:hover {
color: #fff;
cursor: pointer;
background: $red;
}
}
}//.pre-image-uploader

View file

@ -0,0 +1,51 @@
//
// Variables
// --------------------------------------------------
// Bourbon - http://bourbon.io/
@import "_bourbon";
$rounded: 2px;
$shadow: rgba(0,0,0,0.05) 0 1px 5px;
$default-transition-duration: 0.3s;
// 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;
// Colours
$darkgrey: #242628;
$grey: #35393b;
$midgrey: #7d878a;
$lightgrey: #e2edf2;
$brown: #aaa9a2;
$midbrown: #c0bfb6;
$lightbrown: #edece4;
$blue: #5BA4E5;
$red: #e25440;
$orange: #F2A925;
$green: #9FBB58;
// Typography
$font-family: 'Open Sans', sans-serif;
$font-family-serif: serif;
$font-family-mono: Inconsolata, monospace;

View file

@ -1,55 +1,34 @@
/*
* 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.
*/
//
// Ground Zero - This is where shit begins.
// --------------------------------------------------
/* ==========================================================================
Modules - These styles are re-used in many areas, grouped by type.
========================================================================== */
// Modules - These styles are re-used in many areas, grouped by type.
@import "normalize.css";
@import "modules/variables";
@import "modules/mixins";
/* Sass variables like colours, font sizes, basic styles. */
@import "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/code";
@import "modules/forms";
/* All the styles controlling forms and form fields. */
@import "modules/buttons";
@import "modules/tables";
@import "modules/navs";
@import "modules/navbar";
@import "modules/dropdowns";
@import "modules/notifications";
@import "modules/modals";
@import "modules/uploader";
// Layouts - Styles for specific admin screen layouts, grouped by screen.
/* ==========================================================================
Layouts - Styles for specific admin screen layouts, grouped by screen.
========================================================================== */
@import "layouts/manage";
/* The manage posts screen. */
@import "layouts/content";
@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 settings panes, grouped by pane.
========================================================================== */
// Settings Layouts - Styles for the settings panes, grouped by pane.
@import "layouts/settings";
/* The settings screen. */
@import "layouts/users";
/* The users pane. */

File diff suppressed because one or more lines are too long