First commit

This commit is contained in:
Pierre Hubert
2016-11-19 12:08:12 +01:00
commit 990540b2b9
4706 changed files with 931207 additions and 0 deletions

View File

@ -0,0 +1,14 @@
// Core
@import "core";
// Breakpoints
@import "breakpoints";
// Layout
@import "layout";
// Typography
@import "typography";
// Nav
@import "nav";

View File

@ -0,0 +1,16 @@
// Media Device Breakpoints
$large-desktop-container: 75.000em !default;
$desktop-container: 60.000em !default;
$tablet-container: 48.000em !default;
$large-mobile-container: 30.000em !default;
$mobile-container: 100% !default;
// Breakpoint Variables For Particles
$media: "all" !default;
$mobile-only: "#{$media} and (max-width:#{$tablet-container - 0.062})" !default;
$no-mobile: "#{$media} and (min-width:#{$tablet-container})" !default;
$small-mobile-range: "#{$media} and (max-width:#{$large-mobile-container})" !default;
$large-mobile-range: "#{$media} and (min-width:#{$large-mobile-container + 0.063}) and (max-width:#{$tablet-container - 0.062})" !default;
$tablet-range: "#{$media} and (min-width:#{$tablet-container}) and (max-width:#{$desktop-container - 0.062})" !default;
$desktop-range: "#{$media} and (min-width:#{$desktop-container}) and (max-width:#{$large-desktop-container - 0.062})" !default;
$large-desktop-range: "#{$media} and (min-width:#{$large-desktop-container})" !default;

View File

@ -0,0 +1,2 @@
// Border Radius
$core-border-radius: rem(3) !default;

View File

@ -0,0 +1,8 @@
// Content Block Spacing Variables
$content-margin: 0.625rem !default;
$content-padding: 0.938rem !default;
// Fixed Block Variables
$fixed-block-full: percentage(1/4) !default;
$fixed-block-desktop: percentage(1/3) !default;
$fixed-block-tablet: percentage(1/2) !default;

View File

@ -0,0 +1,3 @@
// Dropdowns
$dropdown-width: 140px !default;
$flyout-width: 140px !default;

View File

@ -0,0 +1,14 @@
// Base Sizes
$core-font-size: 1rem !default;
$core-line-height: 1.7 !default;
// Heading Sizes
$h1-font-size: $core-font-size + 2.20 !default;
$h2-font-size: $core-font-size + 1.50 !default;
$h3-font-size: $core-font-size + 1.10 !default;
$h4-font-size: $core-font-size + 0.75 !default;
$h5-font-size: $core-font-size + 0.35 !default;
$h6-font-size: $core-font-size - 0.15 !default;
// Spacing
$leading-margin: $core-line-height * 1rem !default;

View File

@ -0,0 +1,11 @@
// Colors
@import "colors";
// Typography
@import "typography";
// Typography
@import "bullets";
// Variables
@import "variables";

View File

@ -0,0 +1,5 @@
$bullet-icon-size: 3.5rem;
$bullet-icon-color-1: $core-accent;
$bullet-icon-color-2: adjust-hue($core-accent, -20);
$bullet-icon-color-3: adjust-hue($core-accent, -130);

View File

@ -0,0 +1,75 @@
// Core
$core-text: #444;
$core-accent: #1BB3E9;
$secondary-link: #F6635E;
$white: #fff;
$black: #000;
$light-gray: #ddd;
$border-color: #EEEEEE;
// Borders
$core-border-color: $light-gray;
$core-border-color-hover: darken($core-border-color, 10);
$core-border-color-focus: $core-accent;
// Shadows
$core-box-shadow: inset 0 1px 3px hsla(0, 0%, 0%, 0.06);
$core-box-shadow-focus: $core-box-shadow, 0 0 5px rgba(darken($core-border-color-focus, 5), 0.7);
// Background
$page-bg: #fff;
// Header
$header-text: #FFFFFF;
// Nav
$navbar-text: #75879A;
$navbar-bg: #FFFFFF;
// Showcase
$showcase-bg: lighten($core-accent, 6%);
$showcase-text: #fff;
// Feature
$feature-bg: #fff;
// Main Body
$main-bg: #f7f7f7;
$body-border: darken($main-bg, 5%);
// Sidebar
$sidebar-text: #aaa;
// Bottom
$bottom-bg: #f7f7f7;
$bottom-text: $core-text;
// Footer
$footer-bg: #333;
$footer-text: #999;
$rule-color: #F0F2F4;
$code-text: #c7254e;
$code-bg: #f9f2f4;
$pre-text: #237794;
$pre-bg: #f0f0f0;
// Dark Contrast variation
$dark-navbar-text: #999;
$dark-sidebar: #222;
$dark-sidebar-text: #999;
$dark-main-bg: #333;
$dark-body-border: #666;
// Info - Yellow
$notes-info-border: #F0AD4E;
$notes-info-bg: #FCF8F2;
// Warning - Red
$notes-warning-border: #D9534F;
$notes-warning-bg: #FDF7F7;
// Note - Blue
$notes-note-border: #5BC0DE;
$notes-note-bg: #F4F8FA;
// Success - Green
$notes-success-border: #5CB85C;
$notes-success-bg: #F1F9F1;

View File

@ -0,0 +1,7 @@
// Font Family
$font-family-default: "Raleway", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
$font-family-header: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
$font-family-mono: "Inconsolata", monospace;
$font-family-serif: "Georgia", "Times", "Times New Roman", serif;
$icons: "FontAwesome";

View File

@ -0,0 +1,13 @@
// Sizes
$header-height: 5rem;
$footer-height: 6rem;
$border-radius: 3px;
// Font Weights
$font-weight-bold: 600;
$font-weight-regular: 400;
$font-weight-light:300;
// Global Paddings
$padding-horiz: 7rem;
$padding-vert: 3rem;

View File

@ -0,0 +1,27 @@
// REQUIRED DEPENDENCIES - DO NOT CHANGE
// Load Third Party Libraries
@import "vendor/bourbon/bourbon";
// Load Nucleus Configuration
@import "configuration/nucleus/base";
// Load Nucleus Mixins and Functions
@import "nucleus/functions/base";
@import "nucleus/mixins/base";
//-------------------------------------------
// LOAD NUCLEUS COMPONENTS
// Core
@import "nucleus/core";
// Flex
@import "nucleus/flex";
// Typography
@import "nucleus/typography";
// Forms
@import "nucleus/forms";

View File

@ -0,0 +1,217 @@
*, *::before, *::after {
@include box-sizing(border-box);
}
@-webkit-viewport{width:device-width}
@-moz-viewport{width:device-width}
@-ms-viewport{width:device-width}
@-o-viewport{width:device-width}
@viewport{width:device-width}
html {
font-size: 100%;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background: transparent;
text-decoration: none;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
mark {
background: #ff0;
color: #000;
}
sub,
sup {
font-size: $core-font-size - 0.250;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
max-width: 100%;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-size: $core-font-size;
}
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
legend {
border: 0;
padding: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0;
table-layout: fixed;
width: 100%;
}
tr, td, th {
vertical-align: middle;
}
th, td {
padding: ($leading-margin / 4) 0;
}
th {
text-align: left;
}

View File

@ -0,0 +1,197 @@
// Page Container
.container {
width: $large-desktop-container;
margin: 0 auto;
padding: 0;
@include breakpoint(desktop-range) {
width: $desktop-container;
}
@include breakpoint(tablet-range) {
width: $tablet-container;
}
@include breakpoint(large-mobile-range) {
width: $large-mobile-container;
}
@include breakpoint(small-mobile-range) {
width: $mobile-container;
}
}
// Grid Row and Column Setup
.grid {
@include display(flex);
@include flex-flow(row);
list-style: none;
margin: 0;
padding: 0;
@include breakpoint(mobile-only) {
@include flex-flow(row wrap);
}
}
.block {
@include flex(1);
min-width: 0;
min-height: 0;
@include breakpoint(mobile-only) {
@include flex(0 100%);
}
}
// Content Block Spacing
.content {
margin: $content-margin;
padding: $content-padding;
}
body [class*="size-"] {
@include breakpoint(mobile-only) {
@include flex(0 100%);
}
}
// Custom Size Modifiers
.size-1-2 {
@include flex(0 percentage(1/2));
}
.size-1-3 {
@include flex(0 percentage(1/3));
}
.size-1-4 {
@include flex(0 percentage(1/4));
}
.size-1-5 {
@include flex(0 percentage(1/5));
}
.size-1-6 {
@include flex(0 percentage(1/6));
}
.size-1-7 {
@include flex(0 percentage(1/7));
}
.size-1-8 {
@include flex(0 percentage(1/8));
}
.size-1-9 {
@include flex(0 percentage(1/9));
}
.size-1-10 {
@include flex(0 percentage(1/10));
}
.size-1-11 {
@include flex(0 percentage(1/11));
}
.size-1-12 {
@include flex(0 percentage(1/12));
}
@include breakpoint(tablet-range) {
.size-tablet-1-2 {
@include flex(0 percentage(1/2));
}
.size-tablet-1-3 {
@include flex(0 percentage(1/3));
}
.size-tablet-1-4 {
@include flex(0 percentage(1/4));
}
.size-tablet-1-5 {
@include flex(0 percentage(1/5));
}
.size-tablet-1-6 {
@include flex(0 percentage(1/6));
}
.size-tablet-1-7 {
@include flex(0 percentage(1/7));
}
.size-tablet-1-8 {
@include flex(0 percentage(1/8));
}
.size-tablet-1-9 {
@include flex(0 percentage(1/9));
}
.size-tablet-1-10 {
@include flex(0 percentage(1/10));
}
.size-tablet-1-11 {
@include flex(0 percentage(1/11));
}
.size-tablet-1-12 {
@include flex(0 percentage(1/12));
}
}
// Fix for Firefox versions 27 and below
@include breakpoint(mobile-only) {
@supports not (flex-wrap: wrap) {
.grid {
display: block;
@include flex-wrap(inherit);
}
.block {
display: block;
@include flex(inherit);
}
}
}
// Reordering
.first-block {
-webkit-box-ordinal-group: 0;
-webkit-order: -1;
-ms-flex-order: -1;
order: -1;
}
.last-block {
-webkit-box-ordinal-group: 2;
-webkit-order: 1;
-ms-flex-order: 1;
order: 1;
}
// Fixed Grid Style
.fixed-blocks {
@include flex-flow(row wrap);
.block {
@include flex(inherit);
width: $fixed-block-full;
@include breakpoint(desktop-range) {
width: $fixed-block-desktop;
}
@include breakpoint(tablet-range) {
width: $fixed-block-tablet;
}
@include breakpoint(mobile-only) {
width: 100%;
}
}
}
// Fix for browsers that don't support flex-wrap
@supports not (flex-wrap: wrap) {
.fixed-blocks {
display: block;
@include flex-flow(inherit);
}
}

View File

@ -0,0 +1,63 @@
fieldset {
border: 0;
padding: $content-padding;
margin: 0 0 $leading-margin 0;
}
input,
label,
select {
display: block;
}
label {
margin-bottom: $leading-margin / 4;
&.required:after {
content: "*";
}
abbr {
display: none;
}
}
textarea, #{$all-text-inputs}, select[multiple=multiple] {
@include transition(border-color);
border-radius: $core-border-radius;
margin-bottom: $leading-margin / 2;
padding: ($leading-margin / 4) ($leading-margin / 4);
width: 100%;
&:focus {
outline: none;
}
}
textarea {
resize: vertical;
}
input[type="checkbox"], input[type="radio"] {
display: inline;
margin-right: $leading-margin / 4;
}
input[type="file"] {
width: 100%;
}
select {
width: auto;
max-width: 100%;
margin-bottom: $leading-margin;
}
button,
input[type="submit"] {
cursor: pointer;
user-select: none;
vertical-align: middle;
white-space: nowrap;
border: inherit;
}

View File

@ -0,0 +1,86 @@
// Body Base
body {
font-size: $core-font-size;
line-height: $core-line-height;
}
// Headings
h1, h2, h3, h4, h5, h6 {
margin: $leading-margin / 2 0 $leading-margin 0;
text-rendering: optimizeLegibility;
}
h1 {
font-size: $h1-font-size;
}
h2 {
font-size: $h2-font-size;
}
h3 {
font-size: $h3-font-size;
}
h4 {
font-size: $h4-font-size;
}
h5 {
font-size: $h5-font-size;
}
h6 {
font-size: $h6-font-size;
}
// Paragraph
p {
margin: $leading-margin 0;
}
// Lists
ul, ol {
margin-top: $leading-margin;
margin-bottom: $leading-margin;
ul, ol {
margin-top: 0;
margin-bottom: 0;
}
}
// Blockquote
blockquote {
margin: $leading-margin 0;
padding-left: $leading-margin / 2;
}
cite {
display: block;
font-size: $core-font-size - 0.125;
&:before {
content: "\2014 \0020";
}
}
// Inline and Code
pre {
margin: $leading-margin 0;
padding: $content-padding;
}
code {
vertical-align: bottom;
}
// Extras
small {
font-size: $core-font-size - 0.125;
}
hr {
border-left: none;
border-right: none;
border-top: none;
margin: $leading-margin 0;
}

View File

@ -0,0 +1,2 @@
@import "direction";
@import "range";

View File

@ -0,0 +1,37 @@
@function opposite-direction($dir) {
@if $dir == 'left' {
@return right;
}
@else if $dir == 'right' {
@return left;
}
@else if $dir == 'ltr' {
@return rtl;
}
@else if $dir == 'rtl' {
@return ltr;
}
@else if $dir == 'top' {
@return bottom;
}
@else if $dir == 'bottom' {
@return top;
}
@else {
@warn "#{$dir} is not a direction! Make sure your direction is all lowercase!";
@return false;
}
}
@function named-direction($dir) {
@if $dir == 'ltr' {
@return left;
}
@else if $dir == 'rtl' {
@return right;
}
@else {
@warn "#{$dir} is not a valid HTML direction! Make sure you are using a valid HTML direction";
@return false;
}
}

View File

@ -0,0 +1,13 @@
@function lower-bound($range){
@if length($range) <= 0 {
@return 0;
}
@return nth($range,1);
}
@function upper-bound($range) {
@if length($range) < 2 {
@return 999999999999;
}
@return nth($range, 2);
}

View File

@ -0,0 +1,2 @@
@import "breakpoints";
@import "utilities";

View File

@ -0,0 +1,30 @@
// Breakpoints
@mixin breakpoint($breakpoints, $media: all) {
@each $breakpoint in $breakpoints {
@if $breakpoint == large-desktop-range {
@media only #{$media} and (min-width: $large-desktop-container) { @content; }
}
@else if $breakpoint == desktop-range {
@media only #{$media} and (min-width: $desktop-container) and (max-width: $large-desktop-container - 0.062) { @content; }
}
@else if $breakpoint == tablet-range {
@media only #{$media} and (min-width: $tablet-container) and (max-width: $desktop-container - 0.062) { @content; }
}
@else if $breakpoint == large-mobile-range {
@media only #{$media} and (min-width: $large-mobile-container + 0.063) and (max-width: $tablet-container - 0.062) { @content; }
}
@else if $breakpoint == small-mobile-range {
@media only #{$media} and (max-width: $large-mobile-container) { @content; }
}
@else if $breakpoint == no-mobile {
@media only #{$media} and (min-width: $tablet-container) { @content; }
}
@else if $breakpoint == mobile-only {
@media only #{$media} and (max-width: $tablet-container - 0.062) { @content; }
}
@else if $breakpoint == desktop-only {
@media only #{$media} and (max-width: $desktop-container - 0.062) { @content; }
}
}
}

View File

@ -0,0 +1,30 @@
// List Reset
%list-reset {
margin: 0;
padding: 0;
list-style: none;
}
// Vertical Centering
%vertical-align {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
// Columns
@mixin columns($columns) {
width: percentage(1/$columns);
}
// Float with margin variable
@mixin float($direction, $margin: 0) {
float: $direction;
margin-#{opposite-direction($direction)}: $margin;
}

View File

@ -0,0 +1,46 @@
// Alignment Classes
$align-class-names:
large-desktop,
desktop,
tablet,
large-mobile,
small-mobile,
no-mobile,
mobile-only;
// Breakpoints
$align-class-breakpoints:
$large-desktop-range,
$desktop-range,
$tablet-range,
$large-mobile-range,
$small-mobile-range,
$no-mobile,
$mobile-only;
// Create Responsive Alignment Classes
@mixin align-classes{
.text-left {
text-align: left !important;
}
.text-right {
text-align: right !important;
}
.text-center {
text-align: center !important;
}
.text-justify {
text-align: justify !important;
}
@for $i from 1 through length($align-class-names) {
@media #{(nth($align-class-breakpoints, $i))} {
.#{(nth($align-class-names, $i))}-text-left { text-align: left !important; }
.#{(nth($align-class-names, $i))}-text-right { text-align: right !important; }
.#{(nth($align-class-names, $i))}-text-center { text-align: center !important; }
.#{(nth($align-class-names, $i))}-text-justify { text-align: justify !important; }
}
}
}
@include align-classes;

View File

@ -0,0 +1,24 @@
// REQUIRED DEPENDENCIES - DO NOT CHANGE
// Load Third Party Libraries
@import "vendor/bourbon/bourbon";
// Load Nucleus Configuration
@import "configuration/nucleus/base";
// Load Template Configuration
@import "configuration/template/base";
// Load Nucleus Mixins and Functions
@import "nucleus/functions/base";
@import "nucleus/mixins/base";
//-------------------------------------------
// LOAD PARTICLES
// Text Alignment Classes
@import "nucleus/particles/align-text";
// Show and Hide Based on Screen Size
@import "nucleus/particles/visibility";

View File

@ -0,0 +1,67 @@
// REQUIRED DEPENDENCIES - DO NOT CHANGE
// Load Third Party Libraries
@import "vendor/bourbon/bourbon";
// Load Nucleus Configuration
@import "configuration/nucleus/base";
// Load Template Configuration
@import "configuration/template/base";
// Load Nucleus Mixins and Functions
@import "nucleus/functions/base";
@import "nucleus/mixins/base";
// Load Template Library
@import "template/modules/base";
//-------------------------------------------
// TEMPLATE COMPONENTS
// Core
@import "template/core";
@import "template/fonts";
// Extensions
@import "template/extensions";
// Header
@import "template/header";
// Footer
@import "template/footer";
// Typography
@import "template/typography";
// Forms
@import "template/forms";
// Tables
@import "template/tables";
// Buttons
@import "template/buttons";
// Bullets
@import "template/bullets";
// Pushy Panel
@import "template/panel";
// Blog
@import "template/blog";
// Errors
@import "template/errors";
// SimpleSearch
@import "template/simplesearch";
// Custom
@import "template/custom";
// Modular
@import "template/modular/all";

View File

@ -0,0 +1,171 @@
.blog-header {
padding-top: 2rem;
padding-bottom: 2rem;
&.blog-header-image {
background-size: cover;
background-position: center;
h1, h2 {
color: $header-text;
}
}
h1 {
font-size: 4rem;
margin-top: 0;
@include breakpoint(tablet-range) {
font-size: 3rem;
}
@include breakpoint(mobile-only) {
font-size: 2.5rem;
line-height: 1.2;
margin-bottom: 2.5rem;
}
}
& + .blog-content {
padding-top: $padding-vert;
}
}
// List Blog Item
.list-item {
border-bottom: 1px solid $border-color;
margin-bottom: $padding-vert;
&:last-child {
border-bottom: 0;
}
.list-blog-header {
position: relative;
h4 {
margin-bottom: 0.5rem;
a {
color: $core-text;
&:hover {
color: $core-accent;
}
}
}
img {
display: block;
margin-top: 1rem;
border-radius: $border-radius;
}
}
.list-blog-date {
float: right;
text-align: center;
span {
display: block;
font-size: 1.75rem;
font-weight: $font-weight-bold;
line-height: 110%;
}
em {
display: block;
border-top: 1px solid $border-color;
font-style: normal;
text-transform: uppercase;
}
}
}
// Bigger first para
.blog-content-item {
.list-blog-padding > p:nth-child(2) {
font-size: $core-font-size + 0.2rem;
}
}
// Tags
.tags {
a {
display: inline-block;
font-size: $core-font-size - 0.2rem;
border: 1px solid $core-accent;
border-radius: $border-radius;
padding: 0.1rem 0.4rem;
margin-bottom: 0.2rem;
text-transform: uppercase;
}
}
// Archives & Related-Pages
.archives, .related-pages {
padding: 0;
list-style: none;
li {
border-bottom: 1px solid $border-color;
line-height: $core-font-size + 1rem;
&:last-child {
border-bottom: 0;
}
}
}
.related-pages {
li {
a {
display: block;
}
}
.score {
display: block;
float: right;
color: #999;
font-size: 85%
}
}
// Syndicate
.syndicate {
a {
margin-bottom: 1rem;
}
}
// Breadcrumbs
div#breadcrumbs {
padding-left: 0;
@include breakpoint(mobile-only) {
display: none;
}
}
// Sidebar
#sidebar {
padding-left: 3rem;
@include breakpoint(mobile-only) {
padding-left: 0;
}
.sidebar-content {
h4 {
margin-bottom: 1rem;
}
p, ul {
margin-top: 1rem;
}
margin-bottom: $padding-vert;
}
}
// Pagination
ul.pagination {
margin: 0 0 $padding-vert;
text-align: center;
}
// Prev / Next
.prev-next {
margin-top: 5rem;
text-align: center;
}

View File

@ -0,0 +1,60 @@
.bullets {
margin: $leading-margin 0;
margin-left: -$leading-margin / 2;
margin-right: -$leading-margin / 2;
overflow: auto;
}
.bullet {
float: left;
padding: 0 $leading-margin / 2;
}
.two-column-bullet {
@include columns(2);
@include breakpoint(mobile-only) {
@include columns(1);
}
}
.three-column-bullet {
@include columns(3);
@include breakpoint(mobile-only) {
@include columns(1);
}
}
.four-column-bullet {
@include columns(4);
@include breakpoint(mobile-only) {
@include columns(1);
}
}
.bullet-icon {
float: left;
background: $bullet-icon-color-1;
padding: $bullet-icon-size / 4;
width: $bullet-icon-size;
height: $bullet-icon-size;
border-radius: 50%;
color: $white;
font-size: $bullet-icon-size / 2;
text-align: center;
}
.bullet-icon-1 {
background: $bullet-icon-color-1;
}
.bullet-icon-2 {
background: $bullet-icon-color-2;
}
.bullet-icon-3 {
background: $bullet-icon-color-3;
}
.bullet-content {
margin-left: $bullet-icon-size * 1.3;
}

View File

@ -0,0 +1,9 @@
.button {
@extend %button;
@include button-color($core-accent);
}
.button-secondary {
@extend %button;
@include button-color($secondary-link);
}

View File

@ -0,0 +1,58 @@
html, body {
height: 100%; // use !important to override slidebars.min.css
}
body {
background: $page-bg;
color: $core-text;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
color: $core-accent;
&:hover {
color: darken($core-accent, 20%);
}
}
b, strong {
font-weight: $font-weight-bold
}
// Global Container
#container {
min-height: 100%;
position: relative;
}
// Fullwidth styles
.fullwidth {
#body {
padding-left: 0;
padding-right: 0;
}
#header, #breadcrumbs, .blog-header, .blog-content-item, .content-wrapper, ul.pagination, #body > .modular-row {
@extend .padding-horiz;
}
}
// Global body styling
#body {
@extend .default-animation;
@extend .padding-horiz;
background: $page-bg;
padding-top: $header-height + $padding-vert;
padding-bottom: $footer-height + $padding-vert + 2rem;
}
// Alignment
.left {
float: left;
}
.right {
float: right;
}

View File

@ -0,0 +1,15 @@
// Your custom SCSS should be written here...
.grav-lightslider {
.lSSlideOuter {
.lSPager.lSpg {
> li a {
z-index: 1;
}
}
}
}
#body > script:first-child + .grav-lightslider {
margin-top: -3rem;
}

View File

@ -0,0 +1,17 @@
// Error specific styling
#error {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
padding-bottom: 6rem;
h1 {
font-size: $core-font-size + 4.0rem;
}
p {
margin: 1rem 0;
}
}

View File

@ -0,0 +1,22 @@
.default-animation {
@include transition(all 0.5s ease);
}
.padding-horiz {
padding-left: $padding-horiz;
padding-right: $padding-horiz;
@include breakpoint(desktop-only) {
padding-left: $padding-horiz - 3rem;
padding-right: $padding-horiz - 3rem;
}
@include breakpoint(mobile-only) {
padding-left: $padding-horiz - 6rem;
padding-right: $padding-horiz - 6rem;
}
}
.padding-vert {
padding-top: $padding-vert;
padding-bottom: $padding-vert;
}

View File

@ -0,0 +1,3 @@
// Import Google Web Fonts
@import url(//fonts.googleapis.com/css?family=Montserrat:400|Raleway:300,400,600|Inconsolata);

View File

@ -0,0 +1,42 @@
// Footer styling
#footer {
position: absolute;
background: $footer-bg;
height: $footer-height;
right: 0;
bottom: 0;
left: 0;
@extend .padding-horiz;
color: $footer-text;
text-align: center;
a:hover {
color: #fff;
}
.totop {
position: absolute;
bottom: $footer-height - 1rem;
text-align: center;
left: 0;
right: 0;
span {
font-size: 1.7rem;
line-height: 2.5rem;
background: $footer-bg;
width: 3rem;
height: 2rem;
border-radius: $border-radius;
display: inline-block;
text-align: top;
}
}
p {
@extend %vertical-align;
margin: 0;
.fa {
color: #fff;
}
}
}

View File

@ -0,0 +1,43 @@
fieldset {
border: 1px solid $core-border-color;
}
textarea, #{$all-text-inputs}, select[multiple=multiple] {
background-color: white;
border: 1px solid $core-border-color;
box-shadow: $core-box-shadow;
&:hover {
border-color: $core-border-color-hover;
}
&:focus {
border-color: $core-border-color-focus;
box-shadow: $core-box-shadow-focus;
}
}
label {
@extend strong;
}
// Forms
.form-field {
.required {
color: #F3443F;
font-size: $core-font-size + 2rem;
line-height: $core-font-size + 2rem;
vertical-align: top;
height: 1.5rem;
display: inline-block;
}
}
form {
.buttons {
text-align: center;
}
input {
font-weight: 400;
}
}

View File

@ -0,0 +1,280 @@
// Header styling
$dropdown-color: #f6f6f6;
#header {
@extend .default-animation;
@extend .padding-horiz;
position: fixed;
z-index: 10;
width: 100%;
height: $header-height;
background-color: rgba(255,255,255,0.90);
box-shadow: 0 0.05rem 1rem rgba(0,0,0, 0.15);
// scroll based changes
&.scrolled {
height: $header-height - 2rem;
background-color: rgba(255,255,255,0.90) !important;
box-shadow: 0 0.05rem 1rem rgba(0,0,0, 0.15) !important;
#logo h3 {
color: $core-text !important;
font-size: 1.6rem !important;
}
#logo a, #navbar span {
color: $core-text !important;
}
#navbar a {
color: $core-accent !important;
&:hover {
color: darken($core-accent, 20%) !important;
}
}
#navbar a:before, #navbar a:after {
background-color: $core-accent !important;
}
.navigation {
margin-top: 0.5rem !important;
}
}
// set heights for vertical centering
> .grid, #logo, #navbar {
height: 100%;
}
#logo {
float: left;
h3 {
@extend .default-animation;
@extend %vertical-align;
font-size: 2rem;
line-height: 2rem;
margin: 0;
text-transform: uppercase;
a {
color: $core-text;
}
}
}
#navbar {
font-size: $core-font-size - 0.1rem;
/* Child Indicator */
.has-children {
& > a {
& > span {
display: inline-block;
padding-right: 8px;
&:after {
font-family: FontAwesome;
content: '\f107';
position: absolute;
display: inline-block;
right: 8px;
top: 4px;
}
}
&:after, &:before {
display: none;
}
}
& .has-children > a > span:after {
content: '\f105';
}
}
.navigation > .has-children:hover > a {
background: $dropdown-color;
border: 1px solid darken($dropdown-color, 4%);
border-bottom-color: $dropdown-color;
margin: -1px -1px 0 -1px;
z-index: 1000;
position: relative;
padding-bottom: 1px;
}
ul {
margin: 0;
padding: 0;
list-style: none;
&.navigation {
display: inline-block;
float: right;
@extend .default-animation;
margin-top: 1.4rem;
li {
float: left;
position: relative;
a {
font-family: $font-family-header;
display: inline-block;
padding: 0.3rem 0.8rem;
-webkit-backface-visibility: hidden;
&:before, &:after {
content: "";
position: absolute;
width: 100%;
height: 1px;
bottom: 0;
left: 0;
background-color: $core-accent;
visibility: hidden;
@include transform(scaleX(0));
@include transition(all 0.2s ease);
}
&:hover:before {
visibility: visible;
@include transform(scaleX(0.75));
}
&.active:after {
top: 0;
visibility: visible;
@include transform(scaleX(0.75));
}
}
&.active {
a:after {
top: 0;
visibility: visible;
@include transform(scaleX(0.75));
}
}
/*Active dropdown nav item */
ul {
position: absolute;
background-color: $dropdown-color;
border: 1px solid darken($dropdown-color, 4%);
border-top: 0;
min-width: 12rem;
text-align: left;
z-index: 999;
left: -1px;
display: none;
}
ul li {
display: block;
float: none;
/* Active Dropdown nav item */
&.active > a {
background-color: darken($dropdown-color, 4%);
color: $core-accent;
}
&:hover > a {
background-color: $core-accent;
color: $white;
}
a {
display: block;
margin: 0 -1px;
&:after, &:before {
display: none;
}
}
}
/* Dropdown CSS */
ul ul {
left: 100%;
top: 0px;
}
/* Active on Hover */
&:hover > ul {
display: block;
}
}
@include breakpoint(desktop-only) {
display: none;
}
}
}
.panel-activation {
@extend %vertical-align;
padding: 1rem;
display: none;
font-size: 1.8rem;
cursor: pointer;
float: right;
@include breakpoint(desktop-only) {
display: inline-block;
}
}
}
}
// Header Image
.header-image {
&.fullwidth {
#body {
padding-left: 0;
padding-right: 0;
>.listing-row {
padding-left: $padding-horiz;
padding-right: $padding-horiz;
}
}
}
.listing-row:last-child {
margin-bottom: 2rem;
}
#body {
.flush-top {
margin-top: - $header-height - $padding-vert - 1.5rem;
padding-top: $header-height + 4rem;
}
}
#breadcrumbs {
margin-top: 1rem;
}
#header {
background-color: rgba($header-text,0);
box-shadow: none;
.navigation .has-children:hover a {
color: $core-accent;
}
#logo h3, #logo a {
color: $header-text;
}
a, .menu-btn {
color: $header-text;
}
a:before, a:after {
background-color: rgba($header-text,0.7) !important;
}
}
}

View File

@ -0,0 +1,74 @@
$sidebar-color: #333;
$panel-padding: 1rem;
$panel-text: #ddd;
.sb-slidebar {
background-color: $sidebar-color !important;
}
#panel {
padding-top: $panel-padding;
color: $panel-text;
.navigation {
list-style: none;
padding: 0;
li {
a {
color: $panel-text;
display: block;
padding: 0.5rem 1rem;
font-weight: 600;
&:hover {
color: lighten($panel-text,20%);
background-color: darken($sidebar-color,5%);
}
&:last-child {
border-bottom: 0;
}
}
&.active {
& > a {
background: #fff;
color: $core-text;
&:hover {
color: $core-text;
}
}
}
border-bottom: 1px solid lighten($sidebar-color,4%);
&:first-child {
border-top: 1px solid lighten($sidebar-color,4%);
}
ul {
list-style: none;
padding: 0;
li {
border: 0 !important;
a {
color: darken($panel-text, 10%);
padding: 0.2rem 1rem 0.2rem 2rem;
font-size: 0.9rem;
}
li a {
padding-left: 3rem;
li a {
padding-left: 4rem;
}
}
&.active {
& > a {
background: #ccc;
}
}
}
}
}
}
}

View File

@ -0,0 +1,64 @@
.simplesearch {
h1 {
margin-bottom: 0;
}
.center {
text-align: center;
}
input {
display: inline-block;
max-width: 30rem;
font-size: 2rem;
}
.search-image {
margin-top: 1rem;
img {
border-radius: 4px;
@include breakpoint(mobile-only) {
display: none;
}
}
}
.search-item {
@include breakpoint(mobile-only) {
margin-left: 0;
}
}
.search-wrapper {
.search-submit {
height: 52px;
padding: 0 10px;
img {
width: 30px;
}
}
}
.search-details {
float: right;
margin-top: -2.5rem;
font-weight: bold;
font-size: 1rem;
color: lighten($core-text,20%);
@include breakpoint(mobile-only) {
float: none;
margin-top: -0.2rem;
margin-bottom: 1rem;
}
}
hr {
border-bottom: 1px solid #eee;
}
}

View File

@ -0,0 +1,15 @@
table {
border: 1px solid lighten($core-border-color,5%);
table-layout: auto;
}
th {
@extend strong;
background: lighten($core-border-color,10%);
padding: 0.5rem;
}
td {
padding: 0.5rem;
border: 1px solid lighten($core-border-color,5%);
}

View File

@ -0,0 +1,236 @@
// Body Base
html, body, button, input, select, textarea, .pure-g, .pure-g [class *= "pure-u"] {
font-family: $font-family-default;
font-weight: 400;
}
// Headings
h1, h2, h3, h4, h5, h6 {
font-family: $font-family-header;
font-weight: 400;
text-rendering: optimizeLegibility;
letter-spacing: -0px;
}
h1 {
font-size: $h1-font-size;
@include breakpoint(mobile-only) {
font-size: 2.5rem;
line-height: 1.2;
margin-bottom: 2.5rem;
}
}
h2 {
@include breakpoint(tablet-range) {
font-size: $h2-font-size - .40;
}
@include breakpoint(mobile-only) {
font-size: $h2-font-size - .50;
}
}
h3 {
@include breakpoint(tablet-range) {
font-size: $h3-font-size - .40;
}
@include breakpoint(mobile-only) {
font-size: $h3-font-size - .50;
}
}
h4 {
@include breakpoint(tablet-range) {
font-size: $h4-font-size - .40;
}
@include breakpoint(mobile-only) {
font-size: $h4-font-size - .50;
}
}
h1 {
text-align: center;
letter-spacing: -3px;
}
h2 {
letter-spacing: -2px;
}
h3 {
letter-spacing: -1px;
}
h1 + h2 {
margin: -2rem 0 2rem 0;
font-size: 2rem;
@include breakpoint(tablet-range) {
font-size: 1.6rem;
}
@include breakpoint(mobile-only) {
font-size: 1.5rem;
}
line-height: 1;
text-align: center;
font-family: $font-family-default;
font-weight: 300;
}
h2 + h3 {
margin: 0.5rem 0 2rem 0;
font-size: 2rem;
@include breakpoint(tablet-range) {
font-size: 1.6rem;
}
@include breakpoint(mobile-only) {
font-size: 1.5rem;
}
line-height: 1;
text-align: center;
font-family: $font-family-default;
font-weight: 300;
}
// Blockquote
blockquote {
border-left: 10px solid $rule-color;
p {
font-size: 1.1rem;
color: #999;
}
cite {
display: block;
text-align: right;
color: #666;
font-size: 1.2rem;
}
}
// NOTES!!!!
blockquote > blockquote > blockquote {
margin: 0;
p {
padding: 15px;
display: block;
font-size: 1rem;
margin-top: 0rem;
margin-bottom: 0rem;
}
> p {
// Yellow
margin-left: -71px;
border-left: 10px solid $notes-info-border;
background: $notes-info-bg;
color: darken($notes-info-border,15%);
a {
color: darken($notes-info-border,25%);
&:hover {
color: lighten($notes-info-border,5%);
}
}
}
> blockquote > p {
// Red
margin-left: -94px;
border-left: 10px solid $notes-warning-border;
background: $notes-warning-bg;
color: darken($notes-warning-border,15%);
a {
color: darken($notes-warning-border,25%);
&:hover {
color: lighten($notes-warning-border,5%);
}
}
}
> blockquote > blockquote > p {
// Blue
margin-left: -118px;
border-left: 10px solid $notes-note-border;
background: $notes-note-bg;
color: darken($notes-note-border,15%);
a {
color: darken($notes-note-border,25%);
&:hover {
color: lighten($notes-note-border,5%);
}
}
}
> blockquote > blockquote > blockquote > p {
// Green
margin-left: -142px;
border-left: 10px solid $notes-success-border;
background: $notes-success-bg;
color: darken($notes-success-border,15%);
a {
color: darken($notes-success-border,25%);
&:hover {
color: lighten($notes-success-border,5%);
}
}
}
}
// Inline and Code
code,
kbd,
pre,
samp {
font-family: $font-family-mono;
}
code {
background: $code-bg;
color: darken($code-text,10%);
}
pre {
padding: 2rem;
background: $pre-bg;
border: 1px solid $core-border-color;
border-radius: 3px;
code {
color: $pre-text;
background: inherit;
}
}
// Extras
hr {
border-bottom: 4px solid $rule-color;
}
// Page Title
.page-title {
margin-top: -25px;
padding: 25px;
float: left;
clear: both;
background: $core-accent;
color: $white;
}
// Label
.label {
vertical-align: middle;
background: $core-accent;
border-radius: 100%;
color: $white;
height: 1rem;
min-width: 1rem;
line-height: 1rem;
display: inline-block;
text-align: center;
font-size: $core-font-size - 0.3rem;
font-family: $font-family-header;
margin-right: 0.75rem;
}

View File

@ -0,0 +1,9 @@
@import "showcase";
@import "features";
@import "text";
.modular {
.modular-row:last-child {
margin-bottom: 2rem;
}
}

View File

@ -0,0 +1,99 @@
// Modular Showcase styling
.modular {
.features {
padding: 6rem 0;
text-align: center;
@include clearfix;
h2 {
margin: 0;
line-height: 100%;
}
p {
margin: 1rem 0;
font-size: $core-font-size + 0.2rem;
@include breakpoint(mobile-only) {
font-size: $core-font-size;
}
}
.feature-items {
margin-top: 2rem;
@supports not (flex-wrap: wrap) {
overflow: hidden;
}
}
.feature {
display:block;
float: left;
width: 25%;
vertical-align: top;
margin-top: 2rem;
margin-bottom: 1rem;
@include breakpoint(large-mobile-range) {
margin-top: 1rem;
width: 50%;
}
@include breakpoint(small-mobile-range) {
margin-top: 1rem;
width: 100%;
}
i.fa {
font-size: 2rem;
color: $core-accent;
}
h4 {
margin: 0;
font-size: 1.1rem;
}
p {
display: inline-block;
font-size: $core-font-size;
margin: 0.2rem 0 1rem;
}
}
&.big {
text-align: center;
.feature {
width: 50%;
@include breakpoint(small-mobile-range) {
margin-top: 1rem;
width: 100%;
}
}
i.fa {
font-size: 3rem;
float: left;
}
.feature-content {
padding-right: 2rem;
&.icon-offset {
margin-left: 5rem;
}
h4 {
font-size: 1.3rem;
text-align: left;
}
p {
padding: 0;
text-align: left;
}
}
}
}
}

View File

@ -0,0 +1,60 @@
// Modular Showcase styling
.modular {
// special case for header
&.header-image {
#header {
background-color: rgba(255,255,255,0);
box-shadow: none;
#logo h3 {
color: $header-text;
}
#navbar a {
color: $header-text;
}
}
}
.showcase {
padding-top: 4rem;
padding-bottom: 4rem;
background-color: #666;
background-size: cover;
background-position: center;
text-align: center;
color: $header-text;
h1 {
font-size: 4rem;
margin-top: 0;
@include breakpoint(tablet-range) {
font-size: 3rem;
}
@include breakpoint(mobile-only) {
font-size: 2.5rem;
line-height: 1.2;
margin-bottom: 2.5rem;
}
}
.button {
@extend .default-animation;
color: $header-text;
padding: 0.7rem 2rem;
margin-top: 2rem;
background: rgba(255,255,255,0);
border: 1px solid $header-text;
border-radius: $border-radius;
box-shadow: none;
font-size: $core-font-size + 0.3rem;
&:hover {
background: rgba(255,255,255,0.2);
}
}
}
}

View File

@ -0,0 +1,35 @@
// variables
$text-bg: #f6f6f6;
$text-padding: 6rem;
$image-margin: 2rem;
// styling
.callout {
background: $text-bg;
padding: $text-padding $content-padding;
@include breakpoint(desktop-only) {
text-align: center;
}
.align-left {
float: left;
margin-right: $image-margin;
@include breakpoint(desktop-only) {
float: none;
margin-right: 0;
}
}
.align-right {
float: right;
margin-left: $image-margin;
@include breakpoint(desktop-only) {
float: none;
margin-left: 0;
}
}
img {
border-radius: $border-radius;
}
}

View File

@ -0,0 +1,2 @@
// Buttons
@import "buttons";

View File

@ -0,0 +1,24 @@
%button {
display: inline-block;
padding: 7px 20px;
&.button-small {
padding: 3px 10px;
font-size: $core-font-size - 0.1rem;
}
}
@mixin button-color($color) {
background: $white;
color: $color;
border: 1px solid $color;
border-radius: 3px;
&:hover {
background: $color;
color: $white;
}
&:active {
box-shadow: 0 1px 0 darken($color, 12%);
}
}

View File

@ -0,0 +1,8 @@
//************************************************************************//
// These mixins/functions are deprecated
// They will be removed in the next MAJOR version release
//************************************************************************//
@mixin inline-block {
display: inline-block;
@warn "inline-block mixin is deprecated and will be removed in the next major version release";
}

View File

@ -0,0 +1,77 @@
// Settings
@import "settings/prefixer";
@import "settings/px-to-em";
// Custom Helpers
@import "helpers/convert-units";
@import "helpers/gradient-positions-parser";
@import "helpers/is-num";
@import "helpers/linear-angle-parser";
@import "helpers/linear-gradient-parser";
@import "helpers/linear-positions-parser";
@import "helpers/linear-side-corner-parser";
@import "helpers/radial-arg-parser";
@import "helpers/radial-positions-parser";
@import "helpers/radial-gradient-parser";
@import "helpers/render-gradients";
@import "helpers/shape-size-stripper";
@import "helpers/str-to-num";
// Custom Functions
@import "functions/assign";
@import "functions/color-lightness";
@import "functions/flex-grid";
@import "functions/golden-ratio";
@import "functions/grid-width";
@import "functions/modular-scale";
@import "functions/px-to-em";
@import "functions/px-to-rem";
@import "functions/strip-units";
@import "functions/tint-shade";
@import "functions/transition-property-name";
@import "functions/unpack";
// 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/calc";
@import "css3/columns";
@import "css3/filter";
@import "css3/flex-box";
@import "css3/font-face";
@import "css3/hyphens";
@import "css3/hidpi-media-query";
@import "css3/image-rendering";
@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/directional-values";
@import "addons/ellipsis";
@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";
@import "addons/word-wrap";
// Soon to be deprecated Mixins
@import "bourbon-deprecated-upcoming";

View File

@ -0,0 +1,374 @@
@mixin button ($style: simple, $base-color: #4294f0, $text-size: inherit, $padding: 7px 18px) {
@if type-of($style) == string and type-of($base-color) == color {
@include buttonstyle($style, $base-color, $text-size, $padding);
}
@if type-of($style) == string and type-of($base-color) == number {
$padding: $text-size;
$text-size: $base-color;
$base-color: #4294f0;
@if $padding == inherit {
$padding: 7px 18px;
}
@include buttonstyle($style, $base-color, $text-size, $padding);
}
@if type-of($style) == color and type-of($base-color) == color {
$base-color: $style;
$style: simple;
@include buttonstyle($style, $base-color, $text-size, $padding);
}
@if type-of($style) == color and type-of($base-color) == number {
$padding: $text-size;
$text-size: $base-color;
$base-color: $style;
$style: simple;
@if $padding == inherit {
$padding: 7px 18px;
}
@include buttonstyle($style, $base-color, $text-size, $padding);
}
@if type-of($style) == number {
$padding: $base-color;
$text-size: $style;
$base-color: #4294f0;
$style: simple;
@if $padding == #4294f0 {
$padding: 7px 18px;
}
@include buttonstyle($style, $base-color, $text-size, $padding);
}
&:disabled {
opacity: 0.5;
cursor: not-allowed;
}
}
// Selector Style Button
//************************************************************************//
@mixin buttonstyle($type, $b-color, $t-size, $pad) {
// Grayscale button
@if $type == simple and $b-color == grayscale($b-color) {
@include simple($b-color, true, $t-size, $pad);
}
@if $type == shiny and $b-color == grayscale($b-color) {
@include shiny($b-color, true, $t-size, $pad);
}
@if $type == pill and $b-color == grayscale($b-color) {
@include pill($b-color, true, $t-size, $pad);
}
@if $type == flat and $b-color == grayscale($b-color) {
@include flat($b-color, true, $t-size, $pad);
}
// Colored button
@if $type == simple {
@include simple($b-color, false, $t-size, $pad);
}
@else if $type == shiny {
@include shiny($b-color, false, $t-size, $pad);
}
@else if $type == pill {
@include pill($b-color, false, $t-size, $pad);
}
@else if $type == flat {
@include flat($b-color, false, $t-size, $pad);
}
}
// Simple Button
//************************************************************************//
@mixin simple($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
$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 is-light($base-color) {
$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: $textsize;
font-weight: bold;
@include linear-gradient ($base-color, $stop-gradient);
padding: $padding;
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),
&:focus: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;
}
}
// Shiny Button
//************************************************************************//
@mixin shiny($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
$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 is-light($base-color) {
$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: $textsize;
font-weight: bold;
@include linear-gradient(top, $base-color 0%, $second-stop 50%, $third-stop 50%, $fourth-stop 100%);
padding: $padding;
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),
&:focus: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;
}
}
// Pill Button
//************************************************************************//
@mixin pill($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
$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 is-light($base-color) {
$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;
color: $color;
display: inline-block;
font-size: $textsize;
font-weight: normal;
line-height: 1;
@include linear-gradient ($base-color, $stop-gradient);
padding: $padding;
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),
&:focus: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;
text-shadow: 0 -1px 1px $text-shadow-active;
}
}
// Flat Button
//************************************************************************//
@mixin flat($base-color, $grayscale: false, $textsize: inherit, $padding: 7px 18px) {
$color: hsl(0, 0, 100%);
@if is-light($base-color) {
$color: hsl(0, 0, 20%);
}
background-color: $base-color;
border-radius: 3px;
border: none;
color: $color;
display: inline-block;
font-size: inherit;
font-weight: bold;
padding: 7px 18px;
text-decoration: none;
background-clip: padding-box;
&:hover:not(:disabled){
$base-color-hover: adjust-color($base-color, $saturation: 4%, $lightness: 5%);
@if $grayscale == true {
$base-color-hover: grayscale($base-color-hover);
}
background-color: $base-color-hover;
cursor: pointer;
}
&:active:not(:disabled),
&:focus:not(:disabled) {
$base-color-active: adjust-color($base-color, $saturation: -4%, $lightness: -5%);
@if $grayscale == true {
$base-color-active: grayscale($base-color-active);
}
background-color: $base-color-active;
cursor: pointer;
}
}

View File

@ -0,0 +1,23 @@
// Modern 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 {
&:after {
content:"";
display:table;
clear:both;
}
}
// Acknowledgements
// Beat *that* clearfix: [Thierry Koblentz](http://www.css-101.org/articles/clearfix/latest-new-clearfix-so-far.php)

View File

@ -0,0 +1,111 @@
// directional-property mixins are shorthands
// for writing properties like the following
//
// @include margin(null 0 10px);
// ------
// margin-right: 0;
// margin-bottom: 10px;
// margin-left: 0;
//
// - or -
//
// @include border-style(dotted null);
// ------
// border-top-style: dotted;
// border-bottom-style: dotted;
//
// ------
//
// Note: You can also use false instead of null
@function collapse-directionals($vals) {
$output: null;
$A: nth( $vals, 1 );
$B: if( length($vals) < 2, $A, nth($vals, 2));
$C: if( length($vals) < 3, $A, nth($vals, 3));
$D: if( length($vals) < 2, $A, nth($vals, if( length($vals) < 4, 2, 4) ));
@if $A == 0 { $A: 0 }
@if $B == 0 { $B: 0 }
@if $C == 0 { $C: 0 }
@if $D == 0 { $D: 0 }
@if $A == $B and $A == $C and $A == $D { $output: $A }
@else if $A == $C and $B == $D { $output: $A $B }
@else if $B == $D { $output: $A $B $C }
@else { $output: $A $B $C $D }
@return $output;
}
@function contains-falsy($list) {
@each $item in $list {
@if not $item {
@return true;
}
}
@return false;
}
@mixin directional-property($pre, $suf, $vals) {
// Property Names
$top: $pre + "-top" + if($suf, "-#{$suf}", "");
$bottom: $pre + "-bottom" + if($suf, "-#{$suf}", "");
$left: $pre + "-left" + if($suf, "-#{$suf}", "");
$right: $pre + "-right" + if($suf, "-#{$suf}", "");
$all: $pre + if($suf, "-#{$suf}", "");
$vals: collapse-directionals($vals);
@if contains-falsy($vals) {
@if nth($vals, 1) { #{$top}: nth($vals, 1); }
@if length($vals) == 1 {
@if nth($vals, 1) { #{$right}: nth($vals, 1); }
} @else {
@if nth($vals, 2) { #{$right}: nth($vals, 2); }
}
// prop: top/bottom right/left
@if length($vals) == 2 {
@if nth($vals, 1) { #{$bottom}: nth($vals, 1); }
@if nth($vals, 2) { #{$left}: nth($vals, 2); }
// prop: top right/left bottom
} @else if length($vals) == 3 {
@if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
@if nth($vals, 2) { #{$left}: nth($vals, 2); }
// prop: top right bottom left
} @else if length($vals) == 4 {
@if nth($vals, 3) { #{$bottom}: nth($vals, 3); }
@if nth($vals, 4) { #{$left}: nth($vals, 4); }
}
// prop: top/right/bottom/left
} @else {
#{$all}: $vals;
}
}
@mixin margin($vals...) {
@include directional-property(margin, false, $vals...);
}
@mixin padding($vals...) {
@include directional-property(padding, false, $vals...);
}
@mixin border-style($vals...) {
@include directional-property(border, style, $vals...);
}
@mixin border-color($vals...) {
@include directional-property(border, color, $vals...);
}
@mixin border-width($vals...) {
@include directional-property(border, width, $vals...);
}

View File

@ -0,0 +1,7 @@
@mixin ellipsis($width: 100%) {
display: inline-block;
max-width: $width;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

View File

@ -0,0 +1,5 @@
$georgia: Georgia, Cambria, "Times New Roman", Times, serif;
$helvetica: "Helvetica Neue", Helvetica, Roboto, 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;

View File

@ -0,0 +1,10 @@
@mixin hide-text {
overflow: hidden;
&:before {
content: "";
display: block;
width: 0;
height: 100%;
}
}

View File

@ -0,0 +1,86 @@
//************************************************************************//
// 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"]';
// Bare inputs
//************************************************************************//
$all-text-inputs: assign-inputs($inputs-list);
// Hover Pseudo-class
//************************************************************************//
$all-text-inputs-hover: assign-inputs($inputs-list, hover);
// Focus Pseudo-class
//************************************************************************//
$all-text-inputs-focus: assign-inputs($inputs-list, focus);
// 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;
// }
//************************************************************************//
// Generate a variable ($all-button-inputs) with a list of all html5
// input types that have a button-based input, excluding button.
//************************************************************************//
$inputs-button-list: 'input[type="button"]',
'input[type="reset"]',
'input[type="submit"]';
// Bare inputs
//************************************************************************//
$all-button-inputs: assign-inputs($inputs-button-list);
// Hover Pseudo-class
//************************************************************************//
$all-button-inputs-hover: assign-inputs($inputs-button-list, hover);
// Focus Pseudo-class
//************************************************************************//
$all-button-inputs-focus: assign-inputs($inputs-button-list, focus);
// Active Pseudo-class
//************************************************************************//
$all-button-inputs-active: assign-inputs($inputs-button-list, active);
// You must use interpolation on the variable:
// #{$all-button-inputs}
// #{$all-button-inputs-hover}
// #{$all-button-inputs-focus}
// #{$all-button-inputs-active}
// Example
//************************************************************************//
// #{$all-button-inputs}, button {
// border: 1px solid red;
// }

View File

@ -0,0 +1,32 @@
@mixin position ($position: relative, $coordinates: null null null null) {
@if type-of($position) == list {
$coordinates: $position;
$position: relative;
}
$coordinates: unpack($coordinates);
$top: nth($coordinates, 1);
$right: nth($coordinates, 2);
$bottom: nth($coordinates, 3);
$left: nth($coordinates, 4);
position: $position;
@if ($top and $top == auto) or (type-of($top) == number) {
top: $top;
}
@if ($right and $right == auto) or (type-of($right) == number) {
right: $right;
}
@if ($bottom and $bottom == auto) or (type-of($bottom) == number) {
bottom: $bottom;
}
@if ($left and $left == auto) or (type-of($left) == number) {
left: $left;
}
}

View File

@ -0,0 +1,45 @@
//************************************************************************//
// Example: @include prefixer(border-radius, $radii, webkit ms spec);
//************************************************************************//
// Variables located in /settings/_prefixer.scss
@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 !global;
$prefix-for-mozilla: false !global;
$prefix-for-microsoft: false !global;
$prefix-for-opera: false !global;
$prefix-for-spec: false !global;
}

View File

@ -0,0 +1,33 @@
@mixin rem($property, $size, $base: $em-base) {
@if not unitless($base) {
$base: strip-units($base);
}
$unitless_values: ();
@each $num in $size {
@if not unitless($num) {
@if unit($num) == "em" {
$num: $num * $base;
}
$num: strip-units($num);
}
$unitless_values: append($unitless_values, $num);
}
$size: $unitless_values;
$pixel_values: ();
$rem_values: ();
@each $value in $pxval {
$pixel_value: $value * 1px;
$pixel_values: append($pixel_values, $pixel_value);
$rem_value: ($value / $base) * 1rem;
$rem_values: append($rem_values, $rem_value);
}
#{$property}: $pixel_values;
#{$property}: $rem_values;
}

View File

@ -0,0 +1,31 @@
@mixin retina-image($filename, $background-size, $extension: png, $retina-filename: null, $retina-suffix: _2x, $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}#{$retina-suffix}.#{$extension}");
}
}
@else {
@if $retina-filename {
background-image: url("#{$retina-filename}.#{$extension}");
}
@else {
background-image: url("#{$filename}#{$retina-suffix}.#{$extension}");
}
}
background-size: $background-size;
}
}

View File

@ -0,0 +1,16 @@
@mixin size($size) {
$height: nth($size, 1);
$width: $height;
@if length($size) > 1 {
$height: nth($size, 2);
}
@if $height == auto or (type-of($height) == number and not unitless($height)) {
height: $height;
}
@if $width == auto or (type-of($height) == number and not unitless($width)) {
width: $width;
}
}

View File

@ -0,0 +1,32 @@
// 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);

View File

@ -0,0 +1,83 @@
@mixin triangle ($size, $color, $direction) {
height: 0;
width: 0;
$width: nth($size, 1);
$height: nth($size, length($size));
$foreground-color: nth($color, 1);
$background-color: if(length($color) == 2, nth($color, 2), transparent);
@if ($direction == up) or ($direction == down) or ($direction == right) or ($direction == left) {
$width: $width / 2;
$height: if(length($size) > 1, $height, $height/2);
@if $direction == up {
border-left: $width solid $background-color;
border-right: $width solid $background-color;
border-bottom: $height solid $foreground-color;
} @else if $direction == right {
border-top: $width solid $background-color;
border-bottom: $width solid $background-color;
border-left: $height solid $foreground-color;
} @else if $direction == down {
border-left: $width solid $background-color;
border-right: $width solid $background-color;
border-top: $height solid $foreground-color;
} @else if $direction == left {
border-top: $width solid $background-color;
border-bottom: $width solid $background-color;
border-right: $height solid $foreground-color;
}
}
@else if ($direction == up-right) or ($direction == up-left) {
border-top: $height solid $foreground-color;
@if $direction == up-right {
border-left: $width solid $background-color;
} @else if $direction == up-left {
border-right: $width solid $background-color;
}
}
@else if ($direction == down-right) or ($direction == down-left) {
border-bottom: $height solid $foreground-color;
@if $direction == down-right {
border-left: $width solid $background-color;
} @else if $direction == down-left {
border-right: $width solid $background-color;
}
}
@else if ($direction == inset-up) {
border-width: $height $width;
border-style: solid;
border-color: $background-color $background-color $foreground-color;
}
@else if ($direction == inset-down) {
border-width: $height $width;
border-style: solid;
border-color: $foreground-color $background-color $background-color;
}
@else if ($direction == inset-right) {
border-width: $width $height;
border-style: solid;
border-color: $background-color $background-color $background-color $foreground-color;
}
@else if ($direction == inset-left) {
border-width: $width $height;
border-style: solid;
border-color: $background-color $foreground-color $background-color $background-color;
}
}

View File

@ -0,0 +1,8 @@
@mixin word-wrap($wrap: break-word) {
word-wrap: $wrap;
@if $wrap == break-word {
overflow-wrap: break-word;
word-break: break-all;
}
}

View File

@ -0,0 +1,52 @@
// 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);
}

View File

@ -0,0 +1,3 @@
@mixin appearance ($value) {
@include prefixer(appearance, $value, webkit moz ms o spec);
}

View File

@ -0,0 +1,6 @@
//************************************************************************//
// Backface-visibility mixin
//************************************************************************//
@mixin backface-visibility($visibility) {
@include prefixer(backface-visibility, $visibility, webkit spec);
}

View File

@ -0,0 +1,42 @@
//************************************************************************//
// Background-image property for adding multiple background images with
// gradients, or for stringing multiple gradients together.
//************************************************************************//
@mixin background-image($images...) {
$webkit-images: ();
$spec-images: ();
@each $image in $images {
$webkit-image: ();
$spec-image: ();
@if (type-of($image) == string) {
$url-str: str-slice($image, 0, 3);
$gradient-type: str-slice($image, 0, 6);
@if $url-str == "url" {
$webkit-image: $image;
$spec-image: $image;
}
@else if $gradient-type == "linear" {
$gradients: _linear-gradient-parser($image);
$webkit-image: map-get($gradients, webkit-image);
$spec-image: map-get($gradients, spec-image);
}
@else if $gradient-type == "radial" {
$gradients: _radial-gradient-parser($image);
$webkit-image: map-get($gradients, webkit-image);
$spec-image: map-get($gradients, spec-image);
}
}
$webkit-images: append($webkit-images, $webkit-image, comma);
$spec-images: append($spec-images, $spec-image, comma);
}
background-image: $webkit-images;
background-image: $spec-images;
}

View File

@ -0,0 +1,55 @@
//************************************************************************//
// Background property for adding multiple backgrounds using shorthand
// notation.
//************************************************************************//
@mixin background($backgrounds...) {
$webkit-backgrounds: ();
$spec-backgrounds: ();
@each $background in $backgrounds {
$webkit-background: ();
$spec-background: ();
$background-type: type-of($background);
@if $background-type == string or list {
$background-str: if($background-type == list, nth($background, 1), $background);
$url-str: str-slice($background-str, 0, 3);
$gradient-type: str-slice($background-str, 0, 6);
@if $url-str == "url" {
$webkit-background: $background;
$spec-background: $background;
}
@else if $gradient-type == "linear" {
$gradients: _linear-gradient-parser("#{$background}");
$webkit-background: map-get($gradients, webkit-image);
$spec-background: map-get($gradients, spec-image);
}
@else if $gradient-type == "radial" {
$gradients: _radial-gradient-parser("#{$background}");
$webkit-background: map-get($gradients, webkit-image);
$spec-background: map-get($gradients, spec-image);
}
@else {
$webkit-background: $background;
$spec-background: $background;
}
}
@else {
$webkit-background: $background;
$spec-background: $background;
}
$webkit-backgrounds: append($webkit-backgrounds, $webkit-background, comma);
$spec-backgrounds: append($spec-backgrounds, $spec-background, comma);
}
background: $webkit-backgrounds;
background: $spec-backgrounds;
}

View File

@ -0,0 +1,59 @@
@mixin border-image($borders...) {
$webkit-borders: ();
$spec-borders: ();
@each $border in $borders {
$webkit-border: ();
$spec-border: ();
$border-type: type-of($border);
@if $border-type == string or list {
$border-str: if($border-type == list, nth($border, 1), $border);
$url-str: str-slice($border-str, 0, 3);
$gradient-type: str-slice($border-str, 0, 6);
@if $url-str == "url" {
$webkit-border: $border;
$spec-border: $border;
}
@else if $gradient-type == "linear" {
$gradients: _linear-gradient-parser("#{$border}");
$webkit-border: map-get($gradients, webkit-image);
$spec-border: map-get($gradients, spec-image);
}
@else if $gradient-type == "radial" {
$gradients: _radial-gradient-parser("#{$border}");
$webkit-border: map-get($gradients, webkit-image);
$spec-border: map-get($gradients, spec-image);
}
@else {
$webkit-border: $border;
$spec-border: $border;
}
}
@else {
$webkit-border: $border;
$spec-border: $border;
}
$webkit-borders: append($webkit-borders, $webkit-border, comma);
$spec-borders: append($spec-borders, $spec-border, comma);
}
-webkit-border-image: $webkit-borders;
border-image: $spec-borders;
border-style: solid;
}
//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));

View File

@ -0,0 +1,22 @@
//************************************************************************//
// 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);
}

View File

@ -0,0 +1,4 @@
@mixin box-sizing ($box) {
// content-box | border-box | inherit
@include prefixer(box-sizing, $box, webkit moz spec);
}

View File

@ -0,0 +1,4 @@
@mixin calc($property, $value) {
#{$property}: -webkit-calc(#{$value});
#{$property}: calc(#{$value});
}

View File

@ -0,0 +1,47 @@
@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(column-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);
}

View File

@ -0,0 +1,5 @@
@mixin filter($function: none) {
// <filter-function> [<filter-function]* | none
@include prefixer(filter, $function, webkit spec);
}

View File

@ -0,0 +1,321 @@
// 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: -ms-flexbox; // IE 10
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);
-ms-flex-pack: $pack; // IE 10
}
@mixin box-align($align: stretch) {
// start|end|center|baseline|stretch
@include prefixer(box-align, $align, webkit moz spec);
-ms-flex-align: $align; // IE 10
}
@mixin box-direction($direction: normal) {
// normal|reverse|inherit
@include prefixer(box-direction, $direction, webkit moz spec);
-ms-flex-direction: $direction; // IE 10
}
@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);
-ms-flex-order: $int; // IE 10
}
@mixin box-flex($value: 0.0) {
@include prefixer(box-flex, $value, webkit moz spec);
-ms-flex: $value; // IE 10
}
@mixin box-flex-group($int: 1) {
@include prefixer(box-flex-group, $int, webkit moz spec);
}
// CSS3 Flexible Box Model and property defaults
// Unified attributes for 2009, 2011, and 2012 flavours.
// 2009 - display (box | inline-box)
// 2011 - display (flexbox | inline-flexbox)
// 2012 - display (flex | inline-flex)
@mixin display($value) {
// flex | inline-flex
@if $value == "flex" {
// 2009
display: -webkit-box;
display: -moz-box;
display: box;
// 2012
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox; // 2011 (IE 10)
display: flex;
}
@elseif $value == "inline-flex" {
display: -webkit-inline-box;
display: -moz-inline-box;
display: inline-box;
display: -webkit-inline-flex;
display: -moz-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
}
@else {
display: $value;
}
}
// 2009 - box-flex (integer)
// 2011 - flex (decimal | width decimal)
// 2012 - flex (integer integer width)
@mixin flex($value) {
// Grab flex-grow for older browsers.
$flex-grow: nth($value, 1);
// 2009
@include prefixer(box-flex, $flex-grow, webkit moz spec);
// 2011 (IE 10), 2012
@include prefixer(flex, $value, webkit moz ms spec);
}
// 2009 - box-orient ( horizontal | vertical | inline-axis | block-axis)
// - box-direction (normal | reverse)
// 2011 - flex-direction (row | row-reverse | column | column-reverse)
// 2012 - flex-direction (row | row-reverse | column | column-reverse)
@mixin flex-direction($value: row) {
// Alt values.
$value-2009: $value;
$value-2011: $value;
$direction: "normal";
@if $value == row {
$value-2009: horizontal;
}
@elseif $value == "row-reverse" {
$value-2009: horizontal;
$direction: reverse;
}
@elseif $value == column {
$value-2009: vertical;
}
@elseif $value == "column-reverse" {
$value-2009: vertical;
$direction: reverse;
}
// 2009
@include prefixer(box-orient, $value-2009, webkit moz spec);
@if $direction == "reverse" {
@include prefixer(box-direction, $direction, webkit moz spec);
}
// 2012
@include prefixer(flex-direction, $value, webkit moz spec);
// 2011 (IE 10)
-ms-flex-direction: $value;
}
// 2009 - box-lines (single | multiple)
// 2011 - flex-wrap (nowrap | wrap | wrap-reverse)
// 2012 - flex-wrap (nowrap | wrap | wrap-reverse)
@mixin flex-wrap($value: nowrap) {
// Alt values.
$alt-value: $value;
@if $value == nowrap {
$alt-value: single;
}
@elseif $value == wrap {
$alt-value: multiple;
}
@elseif $value == "wrap-reverse" {
$alt-value: multiple;
}
@include prefixer(box-lines, $alt-value, webkit moz spec);
@include prefixer(flex-wrap, $value, webkit moz ms spec);
}
// 2009 - TODO: parse values into flex-direction/flex-wrap
// 2011 - TODO: parse values into flex-direction/flex-wrap
// 2012 - flex-flow (flex-direction || flex-wrap)
@mixin flex-flow($value) {
@include prefixer(flex-flow, $value, webkit moz spec);
}
// 2009 - box-ordinal-group (integer)
// 2011 - flex-order (integer)
// 2012 - order (integer)
@mixin order($int: 0) {
// 2009
@include prefixer(box-ordinal-group, $int, webkit moz spec);
// 2012
@include prefixer(order, $int, webkit moz spec);
// 2011 (IE 10)
-ms-flex-order: $int;
}
// 2012 - flex-grow (number)
@mixin flex-grow($number: 0) {
@include prefixer(flex-grow, $number, webkit moz spec);
-ms-flex-positive: $number;
}
// 2012 - flex-shrink (number)
@mixin flex-shrink($number: 1) {
@include prefixer(flex-shrink, $number, webkit moz spec);
-ms-flex-negative: $number;
}
// 2012 - flex-basis (number)
@mixin flex-basis($width: auto) {
@include prefixer(flex-basis, $width, webkit moz spec);
-ms-flex-preferred-size: $width;
}
// 2009 - box-pack (start | end | center | justify)
// 2011 - flex-pack (start | end | center | justify)
// 2012 - justify-content (flex-start | flex-end | center | space-between | space-around)
@mixin justify-content ($value: flex-start) {
// Alt values.
$alt-value: $value;
@if $value == "flex-start" {
$alt-value: start;
}
@elseif $value == "flex-end" {
$alt-value: end;
}
@elseif $value == "space-between" {
$alt-value: justify;
}
@elseif $value == "space-around" {
$alt-value: center;
}
// 2009
@include prefixer(box-pack, $alt-value, webkit moz spec);
// 2012
@include prefixer(justify-content, $value, webkit moz ms o spec);
// 2011 (IE 10)
-ms-flex-pack: $alt-value;
}
// 2009 - box-align (start | end | center | baseline | stretch)
// 2011 - flex-align (start | end | center | baseline | stretch)
// 2012 - align-items (flex-start | flex-end | center | baseline | stretch)
@mixin align-items($value: stretch) {
$alt-value: $value;
@if $value == "flex-start" {
$alt-value: start;
}
@elseif $value == "flex-end" {
$alt-value: end;
}
// 2009
@include prefixer(box-align, $alt-value, webkit moz spec);
// 2012
@include prefixer(align-items, $value, webkit moz ms o spec);
// 2011 (IE 10)
-ms-flex-align: $alt-value;
}
// 2011 - flex-item-align (auto | start | end | center | baseline | stretch)
// 2012 - align-self (auto | flex-start | flex-end | center | baseline | stretch)
@mixin align-self($value: auto) {
$value-2011: $value;
@if $value == "flex-start" {
$value-2011: start;
}
@elseif $value == "flex-end" {
$value-2011: end;
}
// 2012
@include prefixer(align-self, $value, webkit moz spec);
// 2011 (IE 10)
-ms-flex-item-align: $value-2011;
}
// 2011 - flex-line-pack (start | end | center | justify | distribute | stretch)
// 2012 - align-content (flex-start | flex-end | center | space-between | space-around | stretch)
@mixin align-content($value: stretch) {
$value-2011: $value;
@if $value == "flex-start" {
$value-2011: start;
}
@elseif $value == "flex-end" {
$value-2011: end;
}
@elseif $value == "space-between" {
$value-2011: justify;
}
@elseif $value == "space-around" {
$value-2011: distribute;
}
// 2012
@include prefixer(align-content, $value, webkit moz spec);
// 2011 (IE 10)
-ms-flex-line-pack: $value-2011;
}

View File

@ -0,0 +1,23 @@
// 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');
}
}
}

View File

@ -0,0 +1,10 @@
// Font feature settings mixin and property default.
// Examples: @include font-feature-settings("liga");
// @include font-feature-settings("lnum" false);
// @include font-feature-settings("pnum" 1, "kern" 0);
// @include font-feature-settings("ss01", "ss02");
@mixin font-feature-settings($settings...) {
@if length($settings) == 0 { $settings: none; }
@include prefixer(font-feature-settings, $settings, webkit moz ms spec);
}

View File

@ -0,0 +1,10 @@
// 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;
}
}

View File

@ -0,0 +1,4 @@
@mixin hyphens($hyphenation: none) {
// none | manual | auto
@include prefixer(hyphens, $hyphenation, webkit moz ms spec);
}

View File

@ -0,0 +1,14 @@
@mixin image-rendering ($mode:auto) {
@if ($mode == crisp-edges) {
-ms-interpolation-mode: nearest-neighbor; // IE8+
image-rendering: -moz-crisp-edges;
image-rendering: -o-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: crisp-edges;
}
@else {
image-rendering: $mode;
}
}

View File

@ -0,0 +1,35 @@
// 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 !global;
@-webkit-keyframes #{$name} {
@content;
}
}
@if $original-prefix-for-mozilla {
@include disable-prefix-for-all();
$prefix-for-mozilla: true !global;
@-moz-keyframes #{$name} {
@content;
}
}
$prefix-for-webkit: $original-prefix-for-webkit !global;
$prefix-for-mozilla: $original-prefix-for-mozilla !global;
$prefix-for-microsoft: $original-prefix-for-microsoft !global;
$prefix-for-opera: $original-prefix-for-opera !global;
$prefix-for-spec: $original-prefix-for-spec !global;
@if $original-prefix-for-spec {
@keyframes #{$name} {
@content;
}
}
}

View File

@ -0,0 +1,38 @@
@mixin linear-gradient($pos, $G1, $G2: null,
$G3: null, $G4: null,
$G5: null, $G6: null,
$G7: null, $G8: null,
$G9: null, $G10: null,
$fallback: null) {
// 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: $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: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
}

View File

@ -0,0 +1,8 @@
@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);
}

View File

@ -0,0 +1,8 @@
@mixin placeholder {
$placeholders: ":-webkit-input" ":-moz" "-moz" "-ms-input";
@each $placeholder in $placeholders {
&:#{$placeholder}-placeholder {
@content;
}
}
}

View File

@ -0,0 +1,39 @@
// Requires Sass 3.1+
@mixin radial-gradient($G1, $G2,
$G3: null, $G4: null,
$G5: null, $G6: null,
$G7: null, $G8: null,
$G9: null, $G10: null,
$pos: null,
$shape-size: null,
$fallback: 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);
$full: $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: -webkit-radial-gradient(unquote(#{$pos}#{$shape-size}#{$full}));
background-image: unquote("radial-gradient(#{$shape-size-spec}#{$pos-spec}#{$full})");
}

View File

@ -0,0 +1,15 @@
@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);
}

View File

@ -0,0 +1,77 @@
// Shorthand mixin. Supports multiple parentheses-deliminated values for each variable.
// Example: @include transition (all 2s ease-in-out);
// @include transition (opacity 1s ease-in 2s, width 2s ease-out);
// @include transition-property (transform, opacity);
@mixin transition ($properties...) {
// Fix for vendor-prefix transform property
$needs-prefixes: false;
$webkit: ();
$moz: ();
$spec: ();
// Create lists for vendor-prefixed transform
@each $list in $properties {
@if nth($list, 1) == "transform" {
$needs-prefixes: true;
$list1: -webkit-transform;
$list2: -moz-transform;
$list3: ();
@each $var in $list {
$list3: join($list3, $var);
@if $var != "transform" {
$list1: join($list1, $var);
$list2: join($list2, $var);
}
}
$webkit: append($webkit, $list1);
$moz: append($moz, $list2);
$spec: append($spec, $list3);
}
// Create lists for non-prefixed transition properties
@else {
$webkit: append($webkit, $list, comma);
$moz: append($moz, $list, comma);
$spec: append($spec, $list, comma);
}
}
@if $needs-prefixes {
-webkit-transition: $webkit;
-moz-transition: $moz;
transition: $spec;
}
@else {
@if length($properties) >= 1 {
@include prefixer(transition, $properties, webkit moz spec);
}
@else {
$properties: all 0.15s ease-out 0s;
@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);
}

View File

@ -0,0 +1,3 @@
@mixin user-select($arg: none) {
@include prefixer(user-select, $arg, webkit moz ms spec);
}

View File

@ -0,0 +1,11 @@
@function assign-inputs($inputs, $pseudo: null) {
$list : ();
@each $input in $inputs {
$input: unquote($input);
$input: if($pseudo, $input + ":" + $pseudo, $input);
$list: append($list, $input, comma);
}
@return $list;
}

View File

@ -0,0 +1,13 @@
// Programatically determines whether a color is light or dark
// Returns a boolean
// More details here http://robots.thoughtbot.com/closer-look-color-lightness
@function is-light($hex-color) {
$-local-red: red(rgba($hex-color, 1.0));
$-local-green: green(rgba($hex-color, 1.0));
$-local-blue: blue(rgba($hex-color, 1.0));
$-local-lightness: ($-local-red * 0.2126 + $-local-green * 0.7152 + $-local-blue * 0.0722) / 255;
@return $-local-lightness > .6;
}

View File

@ -0,0 +1,39 @@
// 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%;
// }
// }

View File

@ -0,0 +1,3 @@
@function golden-ratio($value, $increment) {
@return modular-scale($value, $increment, $golden)
}

View File

@ -0,0 +1,13 @@
@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;
// }

View File

@ -0,0 +1,66 @@
// Scaling Variables
$golden: 1.618;
$minor-second: 1.067;
$major-second: 1.125;
$minor-third: 1.2;
$major-third: 1.25;
$perfect-fourth: 1.333;
$augmented-fourth: 1.414;
$perfect-fifth: 1.5;
$minor-sixth: 1.6;
$major-sixth: 1.667;
$minor-seventh: 1.778;
$major-seventh: 1.875;
$octave: 2;
$major-tenth: 2.5;
$major-eleventh: 2.667;
$major-twelfth: 3;
$double-octave: 4;
@function modular-scale($value, $increment, $ratio) {
$v1: nth($value, 1);
$v2: nth($value, length($value));
$value: $v1;
// scale $v2 to just above $v1
@while $v2 > $v1 {
$v2: ($v2 / $ratio); // will be off-by-1
}
@while $v2 < $v1 {
$v2: ($v2 * $ratio); // will fix off-by-1
}
// check AFTER scaling $v2 to prevent double-counting corner-case
$double-stranded: $v2 > $v1;
@if $increment > 0 {
@for $i from 1 through $increment {
@if $double-stranded and ($v1 * $ratio) > $v2 {
$value: $v2;
$v2: ($v2 * $ratio);
} @else {
$v1: ($v1 * $ratio);
$value: $v1;
}
}
}
@if $increment < 0 {
// adjust $v2 to just below $v1
@if $double-stranded {
$v2: ($v2 / $ratio);
}
@for $i from $increment through -1 {
@if $double-stranded and ($v1 / $ratio) < $v2 {
$value: $v2;
$v2: ($v2 / $ratio);
} @else {
$v1: ($v1 / $ratio);
$value: $v1;
}
}
}
@return $value;
}

View File

@ -0,0 +1,13 @@
// 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: $em-base) {
@if not unitless($pxval) {
$pxval: strip-units($pxval);
}
@if not unitless($base) {
$base: strip-units($base);
}
@return ($pxval / $base) * 1em;
}

View File

@ -0,0 +1,15 @@
// Convert pixels to rems
// eg. for a relational value of 12px write rem(12)
// Assumes $em-base is the font-size of <html>
@function rem($pxval) {
@if not unitless($pxval) {
$pxval: strip-units($pxval);
}
$base: $em-base;
@if not unitless($base) {
$base: strip-units($base);
}
@return ($pxval / $base) * 1rem;
}

View File

@ -0,0 +1,5 @@
// Srtips the units from a value. e.g. 12px -> 12
@function strip-units($val) {
@return ($val / ($val * 0 + 1));
}

View File

@ -0,0 +1,9 @@
// 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);
}

View File

@ -0,0 +1,22 @@
// 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;
}
}

Some files were not shown because too many files have changed in this diff Show More