sassyseeds 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +3 -4
- data/app/assets/stylesheets/_sassyseeds.scss +52 -0
- data/app/assets/stylesheets/base/_base.scss +4 -0
- data/app/assets/stylesheets/base/_color_palette.scss +37 -0
- data/app/assets/stylesheets/base/_reset.scss +48 -0
- data/app/assets/stylesheets/base/_typography.scss +125 -0
- data/app/assets/stylesheets/base/_utilities.scss +114 -0
- data/app/assets/stylesheets/elements/_buttons.scss +38 -0
- data/app/assets/stylesheets/elements/_checkbox_radio.scss +57 -0
- data/app/assets/stylesheets/elements/_elements.scss +52 -0
- data/app/assets/stylesheets/elements/_forms.scss +16 -0
- data/app/assets/stylesheets/elements/_links.scss +9 -0
- data/app/assets/stylesheets/elements/_lists.scss +4 -0
- data/app/assets/stylesheets/elements/_palette_swatch.scss +35 -0
- data/app/assets/stylesheets/elements/_tables.scss +46 -0
- data/app/assets/stylesheets/themes/_monochrome_theme.scss +75 -0
- data/bin/sassyseeds +1 -0
- data/lib/generators/sassyseeds_generator.rb +9 -0
- data/lib/generators/templates/compass.rb +3 -0
- data/lib/sassyseeds/version.rb +1 -1
- metadata +37 -8
data/README.md
CHANGED
@@ -6,14 +6,13 @@
|
|
6
6
|
|
7
7
|
* Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
```gem 'sassyseeds'```
|
9
|
+
```gem 'sassyseeds' ```
|
10
10
|
|
11
11
|
* Then udpate your bundle:
|
12
12
|
|
13
13
|
```$ bundle```
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
* Or install it yourself
|
17
16
|
```$ gem install sassyseeds```
|
18
17
|
|
19
18
|
|
@@ -40,7 +39,7 @@
|
|
40
39
|
|
41
40
|
* Then, import Sassyseeds at the beginning of application.css.scss
|
42
41
|
|
43
|
-
``` @import "sassyseeds" ```
|
42
|
+
``` @import "sassyseeds/sassyseeds" ```
|
44
43
|
|
45
44
|
This will load compass and all of the files from app/assets/stylesheets/sassyseeds.
|
46
45
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
@import url(http:/\/fonts.googleapis.com/css?family=Source+Sans+Pro:200,300,400,600,700,900,200italic,300italic,400italic,600italic,700italic,900italic|Exo:200,300,400,500,600,700,800,900,200italic,300italic,400italic,500italic,600italic,900italic,800italic,700italic);
|
2
|
+
@import "compass/utilities";
|
3
|
+
@import "compass/css3";
|
4
|
+
@import "compass/css3/user-interface";
|
5
|
+
//---------------------------------------------------------------------------------
|
6
|
+
// import seeds
|
7
|
+
@import "base/base"; // reset, color-palette, typography, etc
|
8
|
+
@import "themes/monochrome_theme"; // use the base-variables in a selected theme.
|
9
|
+
@import "elements/elements"; // define visual styles for elements
|
10
|
+
//---------------------------------------------------------------------------------
|
11
|
+
// apply visual seeds.
|
12
|
+
body { @include body-style; }
|
13
|
+
|
14
|
+
h1 { @include typestyle( h1 ); }
|
15
|
+
h2 { @include typestyle( h2 ); }
|
16
|
+
h3 { @include typestyle( h3 ); }
|
17
|
+
h4 { @include typestyle( h4 ); }
|
18
|
+
h5 { @include typestyle( h5 ); }
|
19
|
+
h6 { @include typestyle( h6 ); }
|
20
|
+
|
21
|
+
hr { @include hr-style; }
|
22
|
+
a { @include link; }
|
23
|
+
blockquote { @include blockquote-style; }
|
24
|
+
em { @include em-style; }
|
25
|
+
strong { @include strong-style; }
|
26
|
+
|
27
|
+
button, input[type=submit], input[type=button] { @include button; }
|
28
|
+
|
29
|
+
code {
|
30
|
+
@include text-input-style;
|
31
|
+
@include code-style;
|
32
|
+
}//code
|
33
|
+
|
34
|
+
input {
|
35
|
+
&[type=text],
|
36
|
+
&[type=password],
|
37
|
+
&[type=email],
|
38
|
+
&[type=number],
|
39
|
+
&[type=search] { @include text-input-style; }
|
40
|
+
}//input
|
41
|
+
textarea { @include text-input-style; }
|
42
|
+
|
43
|
+
table { @include table-style; }
|
44
|
+
th { @include typestyle( h3 ); }
|
45
|
+
th, td { @include table-cell-style; }
|
46
|
+
|
47
|
+
::selection { @include selection-pseudo-style; }
|
48
|
+
::-moz-selection { @include selection-pseudo-style; }
|
49
|
+
|
50
|
+
//-------------------------------------------------
|
51
|
+
// silly shadow dom. inputs are for kids.
|
52
|
+
.checkbox-wrapper, .radio-wrapper { @include checkbox-wrapper-style; }
|
@@ -0,0 +1,37 @@
|
|
1
|
+
// thoughtworks brand color palette.
|
2
|
+
$white: #ffffff;
|
3
|
+
$off-white: #efefef;
|
4
|
+
|
5
|
+
$greyblue: #5C6F7B;
|
6
|
+
$blackblue: #162934;
|
7
|
+
|
8
|
+
$lightblue: #29AAE2;
|
9
|
+
$darkblue: #006FAB;
|
10
|
+
|
11
|
+
$lightgreen: #B1BA1D;
|
12
|
+
$darkgreen: #8D8A00;
|
13
|
+
|
14
|
+
$brightred: #C4122F;
|
15
|
+
$darkred: #891F02;
|
16
|
+
$brick: #B94A48;
|
17
|
+
|
18
|
+
$lightpurple: #5E2351;
|
19
|
+
$darkpurple: #492D3C;
|
20
|
+
|
21
|
+
$lightorange: #F59F1A;
|
22
|
+
$darkorange: #D06F19;
|
23
|
+
|
24
|
+
$pink: #C9006B;
|
25
|
+
$maroon: #7C0040;
|
26
|
+
|
27
|
+
$h136-dark-text-color: #1a1a1a;
|
28
|
+
$h245-dark-text-color: #4f4f4f;
|
29
|
+
$bodycopy-dark-text-color: #333;
|
30
|
+
|
31
|
+
$h136-light-text-color: #e5e5e5;
|
32
|
+
$h245-light-text-color: #b3b3b3;
|
33
|
+
$bodycopy-light-text-color: #cdcdcd;
|
34
|
+
|
35
|
+
//--------------------------------
|
36
|
+
// bg-textures
|
37
|
+
$noise: url('data:image/png;base64,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');
|
@@ -0,0 +1,48 @@
|
|
1
|
+
// css reset based on the work by eric meyer
|
2
|
+
html,body{position:relative;height:100%;min-height:100%;width:100%;line-height:1;}
|
3
|
+
html,body,div,span,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video,output, applet,object,iframe,p,blockquote,pre,code,a,abbr,acronym,address,big,cite,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,del,dfn,table,tbody,tfoot,thead,tr,th,td,tt,var,b,u,i,center,dl,dt,dd,ul,ol,li,label,legend,caption,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea, keygen, select,button,button::-moz-focus-inner,isindex,hr{margin:0;padding:0;}
|
4
|
+
table {border-collapse:collapse;border-spacing:0;}
|
5
|
+
fieldset, img, abbr, acronyminput, input,textarea{border:0;border:none;outline:none;}
|
6
|
+
address,caption,cite,code,dfn,th,var {font-style:normal;font-weight:normal;}
|
7
|
+
ol,ul,li{list-style:none;list-style-type:none;list-style-position: inside;}
|
8
|
+
caption,th,input,textarea {text-align:left;}
|
9
|
+
em, strong {font-style: normal; font-weight: normal;}
|
10
|
+
h1,h2,h3,h4,h5,h6 {font-size:1.0em;font-weight:normal;}
|
11
|
+
q:before,q:after,blockquote:before,blockquote:after {content:'';content:none;quotes:none;}
|
12
|
+
a, a:hover, a:visited, a:active, a:link {text-decoration:none;}
|
13
|
+
form {display: block;}
|
14
|
+
textarea:focus, input:focus, select:focus {outline: none;}
|
15
|
+
input, textarea, keygen, select, button, isindex { font: inherit; color: inherit; letter-spacing: inherit; word-spacing: inherit; text-transform: none; text-indent: 0; text-shadow: inherit; display: inline-block; text-align: inherit; border: none; }
|
16
|
+
textarea, input { line-height: normal; }
|
17
|
+
keygen, select, button, isindex, input[type=submit], input[type=button] { line-height: inherit; }
|
18
|
+
pre, code {line-height:1;}
|
19
|
+
// html5 block elements
|
20
|
+
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section {display: block;}
|
21
|
+
audio:not([controls]) { display: none; }
|
22
|
+
svg:not(:root) { overflow: hidden; }
|
23
|
+
[hidden] { display: none; }
|
24
|
+
.clear, .clearfloat {clear:both;}
|
25
|
+
// save your sanity
|
26
|
+
input[type=checkbox],
|
27
|
+
input[type=radio],
|
28
|
+
input[type=search],
|
29
|
+
input[type=submit],
|
30
|
+
input[type="search"]::-webkit-search-decoration,
|
31
|
+
input[type="search"]::-webkit-search-cancel-button,
|
32
|
+
input[type=number]::-webkit-inner-spin-button,
|
33
|
+
input[type=number]::-webkit-outer-spin-button {
|
34
|
+
-webkit-appearance: none;
|
35
|
+
-moz-appearance: none;
|
36
|
+
-ms-appearance: none;
|
37
|
+
}
|
38
|
+
input[type=number]::-webkit-inner-spin-button,
|
39
|
+
input[type=number]::-webkit-outer-spin-button { margin: 0; }
|
40
|
+
* {
|
41
|
+
-webkit-tap-highlight-color: rgba(0,0,0, .0);
|
42
|
+
-webkit-box-sizing: border-box;
|
43
|
+
-khtml-box-sizing: border-box;
|
44
|
+
-icab-box-sizing: border-box;
|
45
|
+
-moz-box-sizing: border-box;
|
46
|
+
-o-box-sizing: border-box;
|
47
|
+
box-sizing: border-box;
|
48
|
+
}
|
@@ -0,0 +1,125 @@
|
|
1
|
+
// typefaces are imported in application.scss per w3 rules: https://github.com/chriseppstein/compass/issues/639
|
2
|
+
// exo - http://www.google.com/webfonts#UsePlace:use/Collection:Exo:300,400,600,700,800,300italic,400italic,600italic,700italic,800italic
|
3
|
+
|
4
|
+
//---------------------------------
|
5
|
+
// font-families
|
6
|
+
$sans-fallback: Arial, Sans-Serif;
|
7
|
+
$exo: 'Exo', $sans-fallback;
|
8
|
+
$source-sans: 'Source Sans Pro', $sans-fallback;
|
9
|
+
$sans: $exo;
|
10
|
+
$serif: serif;
|
11
|
+
$mono: "lucida console", mono;
|
12
|
+
$body-font-family: $sans;
|
13
|
+
|
14
|
+
|
15
|
+
//-------------------
|
16
|
+
// font weights
|
17
|
+
$light: 200;
|
18
|
+
$book: 300;
|
19
|
+
$normal: 400;
|
20
|
+
$medium: 500;
|
21
|
+
$demi: 600;
|
22
|
+
$bold: 700;
|
23
|
+
$extra-bold: 800;
|
24
|
+
$ultra-bold: 900;
|
25
|
+
|
26
|
+
//--------------------------
|
27
|
+
// font-styles
|
28
|
+
$blockquote-font-style: italic;
|
29
|
+
$em-font-style: italic;
|
30
|
+
$strong-font-weight: $bold;
|
31
|
+
|
32
|
+
//-----------------------------
|
33
|
+
// font-colors
|
34
|
+
$light-text-color: $white;
|
35
|
+
$dark-text-shadow: 0 -1px rgba($blackblue, .3);
|
36
|
+
$dark-text-color: $bodycopy-dark-text-color;
|
37
|
+
$light-text-shadow: 0 -1px rgba($white, .3);
|
38
|
+
|
39
|
+
@mixin light-text {
|
40
|
+
color: $light-text-color;
|
41
|
+
text-shadow: $dark-text-shadow;
|
42
|
+
}//@mixin
|
43
|
+
|
44
|
+
@mixin dark-text {
|
45
|
+
color: $dark-text-color;
|
46
|
+
text-shadow: $light-text-shadow;
|
47
|
+
}//@mixin
|
48
|
+
|
49
|
+
@mixin typestyle( $style ) {
|
50
|
+
|
51
|
+
@if $style == hero-thick {
|
52
|
+
font-size: 48px;
|
53
|
+
line-height: 60px;
|
54
|
+
font-weight: $demi;
|
55
|
+
color: $h136-color;
|
56
|
+
}//@if
|
57
|
+
|
58
|
+
@if $style == hero-thin {
|
59
|
+
font-size: 48px;
|
60
|
+
line-height: 60px;
|
61
|
+
font-weight: 200;
|
62
|
+
color: $h136-color;
|
63
|
+
}//@if
|
64
|
+
|
65
|
+
@if $style == h1 {
|
66
|
+
font-size: 36px;
|
67
|
+
line-height: 52px;
|
68
|
+
font-weight: $demi;
|
69
|
+
color: $h136-color;
|
70
|
+
}//@if
|
71
|
+
|
72
|
+
@if $style == h2 {
|
73
|
+
font-size: 26px;
|
74
|
+
line-height: 34px;
|
75
|
+
font-weight: $medium;
|
76
|
+
color: $h245-color;
|
77
|
+
}//@if
|
78
|
+
|
79
|
+
@if $style == h3 {
|
80
|
+
font-size: 22px;
|
81
|
+
line-height: 30px;
|
82
|
+
font-weight: $medium;
|
83
|
+
color: $h136-color;
|
84
|
+
}//@if
|
85
|
+
|
86
|
+
@if $style == h4 {
|
87
|
+
font-size: 22px;
|
88
|
+
line-height: 30px;
|
89
|
+
font-weight: $demi;
|
90
|
+
color: $h245-color;
|
91
|
+
}//@if
|
92
|
+
|
93
|
+
@if $style == h5 {
|
94
|
+
font-size: 18px;
|
95
|
+
line-height: 24px;
|
96
|
+
font-weight: $demi;
|
97
|
+
color: $h245-color;
|
98
|
+
}//@if
|
99
|
+
|
100
|
+
@if $style == h6 {
|
101
|
+
font-size: 16px;
|
102
|
+
line-height: 24px;
|
103
|
+
font-weight: $bold;
|
104
|
+
color: $h136-color;
|
105
|
+
}//@if
|
106
|
+
|
107
|
+
@if $style == bodycopy {
|
108
|
+
font-size: 16px;
|
109
|
+
line-height: 24px;
|
110
|
+
font-weight: $normal;
|
111
|
+
color: $bodycopy-color;
|
112
|
+
}//@if
|
113
|
+
|
114
|
+
@if $style == codecopy {
|
115
|
+
font-size: 12px;
|
116
|
+
line-height: 1;
|
117
|
+
font-weight: $normal;
|
118
|
+
}//@if
|
119
|
+
|
120
|
+
}//@mixin
|
121
|
+
|
122
|
+
//------------------------------
|
123
|
+
// unicode characters
|
124
|
+
$checkmark-unicode: \2713;
|
125
|
+
$radio-circle-unicode: \25C9;
|
@@ -0,0 +1,114 @@
|
|
1
|
+
// this file contains
|
2
|
+
// custom mixins
|
3
|
+
// sass functions
|
4
|
+
|
5
|
+
@mixin fill( $position:"absolute" ) {
|
6
|
+
position: $position;
|
7
|
+
top: 0;
|
8
|
+
right: 0;
|
9
|
+
bottom: 0;
|
10
|
+
left: 0;
|
11
|
+
height: 100%;
|
12
|
+
width: 100%;
|
13
|
+
}//@mixin
|
14
|
+
|
15
|
+
|
16
|
+
@mixin clearfix( $pseudo:"after" ) {
|
17
|
+
&:#{ $pseudo } {
|
18
|
+
content: "";
|
19
|
+
display: block;
|
20
|
+
height: 1px;
|
21
|
+
width: 1px;
|
22
|
+
clear: both;
|
23
|
+
position: relative;
|
24
|
+
}//&:pseudo
|
25
|
+
}//@mixin
|
26
|
+
|
27
|
+
|
28
|
+
@mixin padding-kill( $direction:"" ) {
|
29
|
+
@if $direction == horizontal {
|
30
|
+
padding-right: 0;
|
31
|
+
padding-left: 0;
|
32
|
+
}//@if
|
33
|
+
|
34
|
+
@if $direction == vertical {
|
35
|
+
padding-top: 0;
|
36
|
+
padding-bottom: 0;
|
37
|
+
}//@if
|
38
|
+
}//@mixin
|
39
|
+
|
40
|
+
|
41
|
+
//-------------------------------------------------
|
42
|
+
// centering absolute or fixed position elements.
|
43
|
+
//
|
44
|
+
@mixin vertical-middle( $height ) {
|
45
|
+
top: 50%;
|
46
|
+
margin-top: -($height/2);
|
47
|
+
}//@mixin
|
48
|
+
@mixin horizontal-center( $width ) {
|
49
|
+
left: 50%;
|
50
|
+
margin-left: -($width/2);
|
51
|
+
}//@mixin
|
52
|
+
|
53
|
+
|
54
|
+
//---------------------------------------------------
|
55
|
+
// bevel borders
|
56
|
+
//
|
57
|
+
@mixin bevel( $direction, $light-border: $bevel-light-border, $dark-border: $bevel-dark-border ) {
|
58
|
+
@if $direction == "vertical" {
|
59
|
+
&:not(:first-of-type) { border-top: $light-border; }
|
60
|
+
&:not(:last-of-type) { border-bottom: $dark-border; }
|
61
|
+
}//@if
|
62
|
+
|
63
|
+
@if $direction == "horizontal" {
|
64
|
+
&:not(:first-of-type) { border-left: $light-border; }
|
65
|
+
&:not(:last-of-type) { border-right: $dark-border; }
|
66
|
+
}//@if
|
67
|
+
|
68
|
+
}//@mixin
|
69
|
+
|
70
|
+
|
71
|
+
@mixin bevel-kill( $direction ) {
|
72
|
+
@if $direction == vertical {
|
73
|
+
&, &:not(:first-of-type) { border-top: none; }
|
74
|
+
&, &:not(:last-of-type) { border-bottom: none; }
|
75
|
+
}//@if
|
76
|
+
|
77
|
+
@if $direction == horizontal {
|
78
|
+
&, &:not(:first-of-type) { border-left: none; }
|
79
|
+
&, &:not(:last-of-type) { border-right: none; }
|
80
|
+
}//@if
|
81
|
+
}//@mixin
|
82
|
+
|
83
|
+
|
84
|
+
//--------------------------------
|
85
|
+
// photoshop box-shadow
|
86
|
+
//
|
87
|
+
// via @heygrady
|
88
|
+
// http://heygrady.com/blog/2011/08/06/recreating-photoshop-drop-shadows-in-css3-and-compass/
|
89
|
+
//
|
90
|
+
@mixin photoshop-drop-shadow ($angle: 0, $distance: 0, $spread: 0, $size: 0, $color: #000, $inner: false) {
|
91
|
+
$angle: (180 - $angle) * pi() / 180; // convert to radians
|
92
|
+
$h-shadow: round(cos($angle) * $distance);
|
93
|
+
$v-shadow: round(sin($angle) * $distance);
|
94
|
+
$css-spread: $size * $spread/100;
|
95
|
+
$blur: ($size - $css-spread);
|
96
|
+
$inset: if($inner != false, 'inset', '');
|
97
|
+
@include box-shadow($h-shadow $v-shadow $blur $css-spread $color unquote($inset));
|
98
|
+
}//@mixin
|
99
|
+
|
100
|
+
//--------------------------------
|
101
|
+
// photoshop text-shadow
|
102
|
+
//
|
103
|
+
// via @heygrady
|
104
|
+
// http://heygrady.com/blog/2011/08/06/recreating-photoshop-drop-shadows-in-css3-and-compass/
|
105
|
+
//
|
106
|
+
@mixin photoshop-text-shadow ($angle: 0, $distance: 0, $spread: 0, $size: 0, $color: #000) {
|
107
|
+
// NOTE: $spread has no effect for text shadows
|
108
|
+
$angle: (180 - $angle) * pi() / 180;
|
109
|
+
$h-shadow: round(cos($angle) * $distance);
|
110
|
+
$v-shadow: round(sin($angle) * $distance);
|
111
|
+
$css-spread: $size * $spread/100;
|
112
|
+
$blur: ($size - $css-spread);
|
113
|
+
@include text-shadow($h-shadow $v-shadow $blur $color);
|
114
|
+
}//@mixin
|
@@ -0,0 +1,38 @@
|
|
1
|
+
// one button mixin to rule them all.
|
2
|
+
//
|
3
|
+
$button-padding: 8px 14px;
|
4
|
+
$button-border-radius: $border-radius;
|
5
|
+
$button-shadow: inset 0 1px 3px 0 rgba(0,0,0, 0.7);
|
6
|
+
$button-default-bg-color: $body-bg-color;
|
7
|
+
$button-default-text-color: $bodycopy-color;
|
8
|
+
$button-default-text-shadow: $body-text-shadow;
|
9
|
+
|
10
|
+
|
11
|
+
@mixin button( $color: $button-default-bg-color, $type: "" ) {
|
12
|
+
display: inline-block;
|
13
|
+
cursor: pointer;
|
14
|
+
padding: $button-padding;
|
15
|
+
text-align: center;
|
16
|
+
color: $button-default-text-color;
|
17
|
+
text-shadow: $button-default-text-shadow;
|
18
|
+
@include user-select( none );
|
19
|
+
@include border-radius( $button-border-radius );
|
20
|
+
@include box-shadow( $button-shadow );
|
21
|
+
@include button-bg-static( $button-bg-color: $color );
|
22
|
+
&:hover, &:focus { @include button-bg-hover( $button-bg-color: $color ); }
|
23
|
+
&:active { @include button-bg-active( $button-bg-color: $color ); }
|
24
|
+
|
25
|
+
@if $type == multibutton {
|
26
|
+
@include border-radius( 0 );
|
27
|
+
&:first-of-type { @include border-radius( $button-border-radius 0 0 $button-border-radius ); }
|
28
|
+
&:last-of-type { @include border-radius( 0 $button-border-radius $button-border-radius 0 ); }
|
29
|
+
}//@if
|
30
|
+
}//@mixin
|
31
|
+
|
32
|
+
|
33
|
+
//--------------------------------
|
34
|
+
// button-bgs
|
35
|
+
@function button-bg-stop-2( $button-bg-stop-2 ) { @return darken( $button-bg-stop-2, 12); }
|
36
|
+
@mixin button-bg-static ( $button-bg-color: $button-default-bg-color ) { @include background( linear-gradient(top, $button-bg-color, button-bg-stop-2($button-bg-color) ) ); }
|
37
|
+
@mixin button-bg-hover ( $button-bg-color: $button-default-bg-color ) { @include background( linear-gradient( top, lighten($button-bg-color, 10), button-bg-stop-2($button-bg-color) ) ); }
|
38
|
+
@mixin button-bg-active ( $button-bg-color: $button-default-bg-color ) { background: darken($button-bg-color, 40); }
|
@@ -0,0 +1,57 @@
|
|
1
|
+
//--------------------------------
|
2
|
+
// apply to any wrapper class
|
3
|
+
// follow the input with a blank span.
|
4
|
+
//
|
5
|
+
$checkbox-wrapper-z-stack-reset: 0;
|
6
|
+
$checkbox-z: 2;
|
7
|
+
$checkbox-span-z: 1;
|
8
|
+
$checkbox-size: 1.5em;
|
9
|
+
|
10
|
+
@mixin checkbox-wrapper-style {
|
11
|
+
position: relative;
|
12
|
+
height: $checkbox-size;
|
13
|
+
width: $checkbox-size;
|
14
|
+
display: inline-block;
|
15
|
+
vertical-align: middle;
|
16
|
+
z-index: $checkbox-wrapper-z-stack-reset;
|
17
|
+
cursor: pointer;
|
18
|
+
|
19
|
+
+ label {
|
20
|
+
line-height: $checkbox-size;
|
21
|
+
vertical-align: middle;
|
22
|
+
}
|
23
|
+
|
24
|
+
input {
|
25
|
+
opacity: 0;
|
26
|
+
@include fill( absolute );
|
27
|
+
z-index: $checkbox-z;
|
28
|
+
|
29
|
+
& + span {
|
30
|
+
@include fill( absolute );
|
31
|
+
z-index: $checkbox-span-z;
|
32
|
+
@include text-input-style;
|
33
|
+
padding: 0;
|
34
|
+
|
35
|
+
&:before {
|
36
|
+
content: "";
|
37
|
+
@include fill( absolute );
|
38
|
+
text-align: center;
|
39
|
+
z-index: 1;
|
40
|
+
line-height: $checkbox-size;
|
41
|
+
vertical-align: middle;
|
42
|
+
}//&:before
|
43
|
+
}//+span
|
44
|
+
|
45
|
+
&[type=checkbox]:checked + span:before {
|
46
|
+
content: "#{$checkmark-unicode}";
|
47
|
+
}//&:check+span:before
|
48
|
+
|
49
|
+
//-----------------------------------
|
50
|
+
//radios
|
51
|
+
&[type=radio] {
|
52
|
+
+ span { @include border-radius( $checkbox-size/2 ); }
|
53
|
+
&:checked + span:before { content: "#{$radio-circle-unicode}"; }
|
54
|
+
}//&[type=radio]
|
55
|
+
|
56
|
+
}//input
|
57
|
+
}//@mixin
|
@@ -0,0 +1,52 @@
|
|
1
|
+
// visual styles for basic elemens
|
2
|
+
// no positional styling
|
3
|
+
|
4
|
+
// some element-styles need their own files
|
5
|
+
@import "elements/buttons";
|
6
|
+
@import "elements/links";
|
7
|
+
@import "elements/lists";
|
8
|
+
@import "elements/forms";
|
9
|
+
@import "elements/checkbox_radio";
|
10
|
+
@import "elements/tables";
|
11
|
+
|
12
|
+
// ui elements
|
13
|
+
@import "elements/palette_swatch";
|
14
|
+
|
15
|
+
@mixin body-style {
|
16
|
+
background: $body-bg;
|
17
|
+
@include typestyle( bodycopy );
|
18
|
+
text-shadow: $body-text-shadow;
|
19
|
+
font-family: $body-font-family;
|
20
|
+
}//@mixin
|
21
|
+
|
22
|
+
@mixin header-style {
|
23
|
+
@include background( $header-bg );
|
24
|
+
border-bottom: $bevel-dark-border;
|
25
|
+
}//@mixin
|
26
|
+
|
27
|
+
@mixin hr-style {
|
28
|
+
border-top: $bevel-dark-border;
|
29
|
+
border-bottom: $bevel-light-border;
|
30
|
+
border-right: none;
|
31
|
+
border-left: none;
|
32
|
+
}//@mixin
|
33
|
+
|
34
|
+
@mixin em-style { font-style: $em-font-style; }
|
35
|
+
@mixin strong-style { font-weight: $bold; }
|
36
|
+
|
37
|
+
$blockquote-padding: 20px 10px;
|
38
|
+
@mixin blockquote-style {
|
39
|
+
padding: $blockquote-padding;
|
40
|
+
&:before, &:after { content: " \"\ "; }
|
41
|
+
}//@mixin
|
42
|
+
|
43
|
+
@mixin selection-pseudo-style {
|
44
|
+
color: $selection-text-color;
|
45
|
+
background: $selection-bg-color;
|
46
|
+
text-shadow: none;
|
47
|
+
}//@mixin
|
48
|
+
|
49
|
+
@mixin code-style {
|
50
|
+
overflow: hidden;
|
51
|
+
@include typestyle( codecopy );
|
52
|
+
}//@mixin
|
@@ -0,0 +1,16 @@
|
|
1
|
+
$text-input-padding: 5px 10px;
|
2
|
+
$text-input-border-radius: $border-radius;
|
3
|
+
$text-input-box-shadow: inset 0 1px 3px 0 rgba(0,0,0, 0.3), 0 1px 2px 0 rgba(255,255,255, .2);
|
4
|
+
|
5
|
+
@mixin text-input-style {
|
6
|
+
display: inline-block;
|
7
|
+
padding: $text-input-padding;
|
8
|
+
text-align: left;
|
9
|
+
vertical-align: middle;
|
10
|
+
border: $text-input-border;
|
11
|
+
@include border-radius( $text-input-border-radius );
|
12
|
+
background: $text-input-bg;
|
13
|
+
@include box-shadow( $text-input-box-shadow );
|
14
|
+
@include transition( background .3s );
|
15
|
+
&:focus { background: $text-input-bg-focus; }
|
16
|
+
} // @mixin text-input
|
@@ -0,0 +1,35 @@
|
|
1
|
+
$default-swatch-size: 100px;
|
2
|
+
|
3
|
+
@mixin palette-swatch ( $size:"" ) {
|
4
|
+
|
5
|
+
// if a size isn't specified, use the default size.
|
6
|
+
@if $size =="" { $size: $default-swatch-size; }
|
7
|
+
|
8
|
+
width: $size;
|
9
|
+
height: $size;
|
10
|
+
display: inline-block;
|
11
|
+
|
12
|
+
@include border-radius( 50% );
|
13
|
+
@include box-shadow( 0 1px 2px 0 rgba(0,0,0, 0.4) );
|
14
|
+
|
15
|
+
|
16
|
+
// todo use @function to count the number of colors in palette
|
17
|
+
// and then use a @for loop to dynamically build this list.
|
18
|
+
//
|
19
|
+
// this goes through all of the colors in your palette.
|
20
|
+
&:nth-of-type(1) { background-color: $greyblue; }
|
21
|
+
&:nth-of-type(2) { background-color: $blackblue; }
|
22
|
+
&:nth-of-type(3) { background-color: $lightblue; }
|
23
|
+
&:nth-of-type(4) { background-color: $darkblue; }
|
24
|
+
&:nth-of-type(5) { background-color: $lightgreen; }
|
25
|
+
&:nth-of-type(6) { background-color: $darkgreen; }
|
26
|
+
&:nth-of-type(7) { background-color: $brightred; }
|
27
|
+
&:nth-of-type(8) { background-color: $darkred; }
|
28
|
+
&:nth-of-type(9) { background-color: $brick; }
|
29
|
+
&:nth-of-type(10) { background-color: $lightpurple; }
|
30
|
+
&:nth-of-type(11) { background-color: $darkpurple; }
|
31
|
+
&:nth-of-type(12) { background-color: $lightorange; }
|
32
|
+
&:nth-of-type(13) { background-color: $darkorange; }
|
33
|
+
&:nth-of-type(14) { background-color: $pink; }
|
34
|
+
&:nth-of-type(15) { background-color: $maroon; }
|
35
|
+
} // @mixin palette-discs
|
@@ -0,0 +1,46 @@
|
|
1
|
+
//----------------------------------
|
2
|
+
// Display property and tables
|
3
|
+
//
|
4
|
+
// Display is positional and can have too great an effect on layouts.
|
5
|
+
// due to this, the display property has been left out of the mixin.
|
6
|
+
//
|
7
|
+
// To use padding on a table element, display must be:
|
8
|
+
// display: block
|
9
|
+
// OR
|
10
|
+
// display: inline-block
|
11
|
+
//
|
12
|
+
// Note that display: table will not accept padding. ( At the time of this writing ).
|
13
|
+
//
|
14
|
+
|
15
|
+
$table-border-radius: $border-radius;
|
16
|
+
$table-shadow-blur: 8px;
|
17
|
+
$table-shadow-spread: 0;
|
18
|
+
$table-shadow-length: $table-shadow-spread + $table-shadow-blur;
|
19
|
+
$table-bg: $body-bg; //override in theme file.
|
20
|
+
|
21
|
+
@mixin table-style {
|
22
|
+
position: relative; //default to control ::before position.
|
23
|
+
padding: 10px 20px;
|
24
|
+
border-top: $bevel-light-border;
|
25
|
+
@include border-radius( $table-border-radius $table-border-radius 0 0 );
|
26
|
+
background: $table-bg;
|
27
|
+
|
28
|
+
&:before {
|
29
|
+
content: "table before";
|
30
|
+
position: absolute;
|
31
|
+
z-index: -1;
|
32
|
+
top: 0;
|
33
|
+
right: 0;
|
34
|
+
bottom: $table-shadow-length;
|
35
|
+
left: 0;
|
36
|
+
@include border-radius( $table-border-radius $table-border-radius 0 0 );
|
37
|
+
@include box-shadow( 0 0 $table-shadow-blur $table-shadow-spread rgba(0,0,0, .4) );
|
38
|
+
}//&:before
|
39
|
+
|
40
|
+
}//@mixin
|
41
|
+
|
42
|
+
@mixin table-cell-style {
|
43
|
+
padding: 10px 20px;
|
44
|
+
border-bottom: $bevel-light-border;
|
45
|
+
@include box-shadow( inset 0 -1px 0 0 $bevel-color-dark );
|
46
|
+
}//@mixin
|
@@ -0,0 +1,75 @@
|
|
1
|
+
//-----------------------------------------
|
2
|
+
// light monochrome
|
3
|
+
$h136-color: $h136-dark-text-color;
|
4
|
+
$h245-color: $h245-dark-text-color;
|
5
|
+
$bodycopy-color: $bodycopy-dark-text-color;
|
6
|
+
$body-text-shadow: $light-text-shadow;
|
7
|
+
$body-bg-color: $off-white;
|
8
|
+
$bevel-color-light: rgba( $white, .8);
|
9
|
+
$bevel-color-dark: rgba(0,0,0, 0.2);
|
10
|
+
$bevel-light-border: 1px solid $bevel-color-light;
|
11
|
+
$bevel-dark-border: 1px solid $bevel-color-dark;
|
12
|
+
//-------------------------------------
|
13
|
+
|
14
|
+
//-----------------------------------------
|
15
|
+
// dark monochrome
|
16
|
+
//
|
17
|
+
// uncomment these variables to view the changes
|
18
|
+
//
|
19
|
+
// $h136-color: $h136-light-text-color;
|
20
|
+
// $h245-color: $h245-light-text-color;
|
21
|
+
// $bodycopy-color: $bodycopy-light-text-color;
|
22
|
+
// $body-text-shadow: $dark-text-shadow;
|
23
|
+
// $body-bg-color: #333;
|
24
|
+
// $bevel-color-light: rgba($white, 0.1);
|
25
|
+
// $bevel-color-dark: rgba(0,0,0, 0.6);
|
26
|
+
// $bevel-light-border: 1px solid $bevel-color-light;
|
27
|
+
// $bevel-dark-border: 1px solid $bevel-color-dark;
|
28
|
+
//-----------------------------------------
|
29
|
+
|
30
|
+
|
31
|
+
//-----------------------------------------
|
32
|
+
// universal monochrome
|
33
|
+
|
34
|
+
// body
|
35
|
+
$body-bg-texture: $noise;
|
36
|
+
$body-bg: $body-bg-color $body-bg-texture;
|
37
|
+
|
38
|
+
// header
|
39
|
+
$header-bg-gradient-base: $body-bg-color;
|
40
|
+
$header-bg-gradient-stop-1: darken($header-bg-gradient-base, 4);
|
41
|
+
$header-bg-gradient-stop-2: darken($header-bg-gradient-base, 8);
|
42
|
+
$header-bg-color: linear-gradient( top, $header-bg-gradient-stop-1, $header-bg-gradient-stop-2 );
|
43
|
+
$header-bg-texture: $noise;
|
44
|
+
$header-bg: $header-bg-texture, $header-bg-color;
|
45
|
+
|
46
|
+
// links
|
47
|
+
$link-color: $lightblue;
|
48
|
+
$link-hover-color: lighten($link-color, 10);
|
49
|
+
|
50
|
+
// global border-radius for buttons and forms
|
51
|
+
$border-radius: 4px;
|
52
|
+
|
53
|
+
// buttons
|
54
|
+
$button-default-bg-color: $body-bg-color;
|
55
|
+
$button-default-text-color: $bodycopy-color;
|
56
|
+
$button-default-text-shadow: $body-text-shadow;
|
57
|
+
|
58
|
+
// forms
|
59
|
+
$input-bg: darken($body-bg-color, 3);
|
60
|
+
$text-input-bg: $input-bg;
|
61
|
+
$text-input-bg-focus: darken($text-input-bg, 3);
|
62
|
+
$text-input-border-color: darken($body-bg-color, 10);
|
63
|
+
$text-input-border-color-hover: darken($text-input-border-color, 10);
|
64
|
+
$text-input-border: 1px solid $text-input-border-color;
|
65
|
+
$unchecked-bg: $input-bg;
|
66
|
+
$checked-bg: $input-bg;
|
67
|
+
|
68
|
+
// pseudo selected state
|
69
|
+
$selection-bg-color: $bodycopy-color;
|
70
|
+
$selection-text-color: $body-bg-color;
|
71
|
+
|
72
|
+
// table
|
73
|
+
$table-bg-texture: $body-bg-texture;
|
74
|
+
$table-bg-color: $body-bg-color;
|
75
|
+
$table-bg: $table-bg-texture $table-bg-color;
|
data/bin/sassyseeds
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class SassyseedsGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('../../..', __FILE__)
|
3
|
+
|
4
|
+
def init
|
5
|
+
copy_file 'lib/generators/templates/compass.rb', 'config/compass.rb'
|
6
|
+
directory 'app/assets/stylesheets', 'app/assets/stylesheets/sassyseeds'
|
7
|
+
gem 'compass-rails', :group => 'assets'
|
8
|
+
end
|
9
|
+
end
|
data/lib/sassyseeds/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassyseeds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: compass-rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: sass
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,11 +37,17 @@ dependencies:
|
|
32
37
|
version: '3.2'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.2'
|
36
46
|
description: Sassyseeds is a sass resource for clean white-label applications.
|
37
47
|
email:
|
38
48
|
- sassyseeds@thoughtworks.com
|
39
|
-
executables:
|
49
|
+
executables:
|
50
|
+
- sassyseeds
|
40
51
|
extensions: []
|
41
52
|
extra_rdoc_files: []
|
42
53
|
files:
|
@@ -45,6 +56,24 @@ files:
|
|
45
56
|
- LICENSE
|
46
57
|
- README.md
|
47
58
|
- Rakefile
|
59
|
+
- app/assets/stylesheets/_sassyseeds.scss
|
60
|
+
- app/assets/stylesheets/base/_base.scss
|
61
|
+
- app/assets/stylesheets/base/_color_palette.scss
|
62
|
+
- app/assets/stylesheets/base/_reset.scss
|
63
|
+
- app/assets/stylesheets/base/_typography.scss
|
64
|
+
- app/assets/stylesheets/base/_utilities.scss
|
65
|
+
- app/assets/stylesheets/elements/_buttons.scss
|
66
|
+
- app/assets/stylesheets/elements/_checkbox_radio.scss
|
67
|
+
- app/assets/stylesheets/elements/_elements.scss
|
68
|
+
- app/assets/stylesheets/elements/_forms.scss
|
69
|
+
- app/assets/stylesheets/elements/_links.scss
|
70
|
+
- app/assets/stylesheets/elements/_lists.scss
|
71
|
+
- app/assets/stylesheets/elements/_palette_swatch.scss
|
72
|
+
- app/assets/stylesheets/elements/_tables.scss
|
73
|
+
- app/assets/stylesheets/themes/_monochrome_theme.scss
|
74
|
+
- bin/sassyseeds
|
75
|
+
- lib/generators/sassyseeds_generator.rb
|
76
|
+
- lib/generators/templates/compass.rb
|
48
77
|
- lib/sassyseeds.rb
|
49
78
|
- lib/sassyseeds/version.rb
|
50
79
|
- sassyseeds.gemspec
|
@@ -68,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
97
|
version: '0'
|
69
98
|
requirements: []
|
70
99
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.8.
|
100
|
+
rubygems_version: 1.8.24
|
72
101
|
signing_key:
|
73
102
|
specification_version: 3
|
74
103
|
summary: Sassyseeds uses a standard module for sass to separate visual and positional
|