roots-rails 0.0.1.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +4 -0
  3. data/lib/generators/roots/framework_generator.rb +28 -0
  4. data/lib/generators/roots/install_generator.rb +36 -0
  5. data/lib/generators/templates/favicon.ico +0 -0
  6. data/lib/generators/templates/images/apple-touch-icon-114x114.png +0 -0
  7. data/lib/generators/templates/images/apple-touch-icon-72x72.png +0 -0
  8. data/lib/generators/templates/images/apple-touch-icon.png +0 -0
  9. data/lib/generators/templates/images/preview.png +0 -0
  10. data/lib/generators/templates/layouts/application.sass +23 -0
  11. data/lib/generators/templates/layouts/config.html.haml +57 -0
  12. data/lib/generators/templates/layouts/layout.html.haml +26 -0
  13. data/lib/generators/templates/noise.png +0 -0
  14. data/lib/generators/templates/sass/modules/_animation.sass +454 -0
  15. data/lib/generators/templates/sass/modules/_buttons.sass +233 -0
  16. data/lib/generators/templates/sass/modules/_code.sass +41 -0
  17. data/lib/generators/templates/sass/modules/_forms.sass +209 -0
  18. data/lib/generators/templates/sass/modules/_interaction.sass +89 -0
  19. data/lib/generators/templates/sass/modules/_reset.sass +238 -0
  20. data/lib/generators/templates/sass/modules/_tables.sass +76 -0
  21. data/lib/generators/templates/sass/modules/_typography.sass +367 -0
  22. data/lib/generators/templates/sass/modules/_ui.sass +205 -0
  23. data/lib/generators/templates/sass/modules/_utilities.sass +372 -0
  24. data/lib/generators/templates/sass/roots.sass +54 -0
  25. data/lib/generators/templates/scripts/pie.htc +96 -0
  26. data/lib/generators/templates/scripts/selectivizr.js +5 -0
  27. data/lib/roots.rb +6 -0
  28. data/lib/roots/engine.rb +6 -0
  29. data/lib/roots/version.rb +4 -0
  30. data/readme.md +24 -0
  31. data/roots-rails.gemspec +28 -0
  32. data/vendor/assets/stylesheets/modules/_animation.sass +454 -0
  33. data/vendor/assets/stylesheets/modules/_buttons.sass +233 -0
  34. data/vendor/assets/stylesheets/modules/_code.sass +41 -0
  35. data/vendor/assets/stylesheets/modules/_fluid.sass +160 -0
  36. data/vendor/assets/stylesheets/modules/_forms.sass +209 -0
  37. data/vendor/assets/stylesheets/modules/_interaction.sass +89 -0
  38. data/vendor/assets/stylesheets/modules/_reset.sass +238 -0
  39. data/vendor/assets/stylesheets/modules/_tables.sass +76 -0
  40. data/vendor/assets/stylesheets/modules/_typography.sass +367 -0
  41. data/vendor/assets/stylesheets/modules/_ui.sass +205 -0
  42. data/vendor/assets/stylesheets/modules/_utilities.sass +372 -0
  43. data/vendor/assets/stylesheets/roots.sass +57 -0
  44. metadata +132 -0
@@ -0,0 +1,233 @@
1
+ // -----------------------------------------------------
2
+ // Buttons
3
+ // -----------------------------------------------------
4
+ // I realize that this is insane, but trust me, it's worth it
5
+
6
+
7
+ // Mixin: Gradient
8
+ // Takes two colors and outputs a vertical gradient that fades between the two colors.
9
+ // ex. +gradient(#EB8468, #BA6952)
10
+
11
+ // TODO: add option to change direction
12
+
13
+ =gradient($color1, $color2)
14
+ background-color: $color2
15
+ background-repeat: repeat-x
16
+ background-image: -moz-linear-gradient(top, $color1 0%, $color2 100%)
17
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, $color1), color-stop(100%, $color2))
18
+ background-image: -webkit-linear-gradient(top, $color1 0%, $color2 100%)
19
+ background-image: -o-linear-gradient(top, $color1 0%, $color2 100%)
20
+ background-image: -ms-linear-gradient(top, $color1 0%, $color2 100%)
21
+ background-image: linear-gradient(top, $color1 0%, $color2 100%)
22
+ -pie-background: linear-gradient(top, $color1 0%, $color2 100%)
23
+ behavior: asset-url('pie.htc', javascript)
24
+
25
+ // Mixin: Simple Gradient
26
+ // Takes one color and an optional strength. Darkens and lightens the color according to the strength
27
+ // and creates a gradient between those two values, the average being the originally passed color.
28
+ // Higher strength will result in a more strongly contrasted gradient
29
+ // ex. +simple-gradient(#EB8468)
30
+ // ex. +simple-gradient(#61D464, 20%)
31
+
32
+ =simple-gradient($color, $strength: 10%)
33
+ $start: lighten($color, $strength)
34
+ $end: darken($color, $strength)
35
+ +gradient($start, $end)
36
+
37
+ // Mixin: Noise Gradient
38
+ // Exactly the same as the gradient mixin, but overlays a very light noise to give it more texture.
39
+ // ex. +noise-gradient(#EB8468, #BA6952)
40
+
41
+ =noise-gradient($color1, $color2)
42
+ background: $color2
43
+ background: url(../img/noise.png) repeat, $color2 -moz-linear-gradient(top, $color1 0%, $color2 100%) repeat-x
44
+ background: url(../img/noise.png) repeat, $color2 -webkit-gradient(linear, left top, left bottom, color-stop(0%, $color1), color-stop(100%, $color2)) repeat-x
45
+ background: url(../img/noise.png) repeat, $color2 -webkit-linear-gradient(top, $color1 0%, $color2 100%) repeat-x
46
+ background: url(../img/noise.png) repeat, $color2 -o-linear-gradient(top, $color1 0%, $color2 100%) repeat-x
47
+ background: url(../img/noise.png) repeat, $color2 -ms-linear-gradient(top, $color1 0%, $color2 100%) repeat-x
48
+ background: url(../img/noise.png) repeat, $color2 linear-gradient(top, $color1 0%, $color2 100%) repeat-x
49
+ -pie-background: url(../img/noise.png) repeat, $color2 linear-gradient(top, $color1 0%, $color2 100%) repeat-x
50
+ behavior: asset-url('pie.htc', javascript)
51
+
52
+ // Mixin: Simple Noise Gradient
53
+ // Exactly like simple gradient, but overlays a very light noise to give it more texture.
54
+ // ex. +simple-noise-gradient(#EB8468, #BA6952)
55
+
56
+ =simple-noise-gradient($color, $strength: 10%)
57
+ $start: lighten($color, $strength)
58
+ $end: darken($color, $strength)
59
+ +noise-gradient($start, $end)
60
+
61
+ // Mixin: Hilight
62
+ // Adds a light brighter line across the top of the element for a perspective effect.
63
+ // Takes an optional argument for strength, which takes a value between 0 and 1
64
+ // ex. +hilight
65
+ // ex. +hilight(.7)
66
+
67
+ =hilight($strength: .3)
68
+ +box-shadow(inset 0 1px 0 rgba(255,255,255,$strength))
69
+
70
+ // This is an internal function used for the button mixins, not intended for use.
71
+
72
+ @function parse-size($size)
73
+ @if $size == small
74
+ @return 10
75
+ @else if $size == medium
76
+ @return 13
77
+ @else if $size == large
78
+ @return 18
79
+ @else if type-of($size) == number
80
+ @if unitless($size)
81
+ @return $size
82
+ @else
83
+ // eventually there should be a function here which allows it to take pixels and strips the "px" off the end
84
+ @warn "No units necessary, you can just pass a unitless number"
85
+ @else
86
+ @warn "You must pass small, medium, large, or a number to this mixin"
87
+
88
+ // Mixin: Simple Button
89
+ // Creates a very basic looking button style. Two optional params:
90
+ // - $color: Takes any color, defaults to the default global color
91
+ // - $size: Takes 'small', 'medium', 'large', or an integer. The numbers reflects the
92
+ // font size for the text inside the button, but scales all other aspects as well.
93
+ // ex. +simple-button
94
+ // ex. +simple-button($blue)
95
+ // ex. +simple-button(#D4513B)
96
+ // ex. +simple-button($green, large)
97
+ // ex. +simple-button(#4C82D4, 24)
98
+
99
+ // These will accept font icons interally in the very near future
100
+
101
+ =simple-button($color: $default, $size: medium)
102
+
103
+ // color detection and changes
104
+ $dark-text: if( lightness($color) < 60%, true, false )
105
+ $text-color: if( $dark-text, $white, #494949 )
106
+
107
+ // parse words, make sure it's a number
108
+ $size: parse-size($size)
109
+
110
+ // now that we've got numbers, let's work some proportions
111
+ $height: round($size*1.53)/2
112
+ $width: round(round($size*1.53)*2.2)/2
113
+
114
+ // dynamically calculated styles
115
+ font-size: #{$size}px
116
+ padding: #{$height}px #{$width}px
117
+ border-radius: #{round($size/4.33333)}px
118
+ background-color: $color
119
+ color: $text-color
120
+ color: rgba($text-color, .95)
121
+
122
+ // constant styles
123
+ cursor: pointer
124
+ font-weight: bold
125
+ font-family: $font-stack
126
+ line-height: 1
127
+ text-align: center
128
+ text-decoration: none
129
+ display: inline-block
130
+
131
+ &:hover, &:focus
132
+ background-color: darken($color, 5%)
133
+ color: darken($text-color, 3%)
134
+ color: rgba(darken($text-color, 3%), .95)
135
+
136
+ &:active
137
+ background-color: darken($color, 10%)
138
+
139
+ // Mixin: Button
140
+ // Creates a more fancy looking button style. Two optional params:
141
+ // - $color: Takes any color, defaults to the default global color
142
+ // - $size: Takes 'small', 'medium', 'large', or an integer. The numbers reflects the
143
+ // font size for the text inside the button, but scales all other aspects as well.
144
+ // ex. +button
145
+ // ex. +button($blue)
146
+ // ex. +button(#D4513B)
147
+ // ex. +button($green, large)
148
+ // ex. +button(#4C82D4, 24)
149
+
150
+ // These will accept font icons interally in the very near future
151
+
152
+ =button($color: $default, $size: medium)
153
+
154
+ // color detection and changes
155
+ $dark-text: if( lightness($color) < 60%, true, false )
156
+ $text-color: if( $dark-text, $white, #494949 )
157
+ $shadow-color: if( $dark-text, rgba(#000,.1), rgba(#fff,.3) )
158
+ $hover-color: if( $dark-text, rgba(#000,.2), rgba(#fff,.5) )
159
+ $down-shadow: if( $dark-text, 0 -1px 1px rgba(#000,.2), 1px 1px 1px rgba(#fff,.6) )
160
+
161
+ // parse words, make sure it's a number
162
+ $size: parse-size($size)
163
+
164
+ // now that we've got numbers, let's work some proportions
165
+ $height: round($size*1.53)/2
166
+ $width: round(round($size*1.53)*2.2)/2
167
+
168
+ // dynamically calculated styles
169
+ font-size: #{$size}px
170
+ padding: #{$height}px #{$width}px
171
+ border-radius: #{round($size/4.33333)}px
172
+ +simple-noise-gradient($color)
173
+ text-shadow: 1px 1px 1px $shadow-color
174
+ border: 1px solid darken($color, 10%)
175
+ color: $text-color
176
+ color: rgba($text-color, .95)
177
+
178
+ // constant styles
179
+ +hilight
180
+ cursor: pointer
181
+ font-weight: bold
182
+ font-family: $font-stack
183
+ line-height: 1
184
+ text-align: center
185
+ text-decoration: none
186
+ display: inline-block
187
+
188
+ &:hover, &:focus
189
+ background-position: 0 -#{$height}px
190
+ color: darken($text-color, 3%)
191
+ color: rgba(darken($text-color, 3%), .95)
192
+ text-shadow: 1px 1px 1px $hover-color
193
+
194
+ &:active
195
+ +box-shadow(inset 0 1px #{$size/2.6}px rgba(darken($color, 25%),.6))
196
+ text-shadow: $down-shadow
197
+ border-color: darken($color, 18%)
198
+
199
+ // Mixin: Button Disabled
200
+ // Add this mixin to a button and it will make the button appear to be disabled.
201
+ // Easiest to attach to a class like '.disabled' and add that class to the button.
202
+ // Takes no arguments.
203
+ // ex. .disabled
204
+ // +button-disabled
205
+
206
+ =button-disabled
207
+ background: #ccc
208
+ border-color: darken(#ccc, 10%)
209
+ opacity: .5
210
+ cursor: default
211
+ &:hover
212
+ background-position: 0 0
213
+ &:active
214
+ +box-shadow(none)
215
+ border-color: darken(#ccc, 10%)
216
+ text-shadow: 1px 1px 1px rgba(#000,.1)
217
+
218
+ // Additive Mixin: Buttons
219
+ // WARNING: Creates classes in your css and styles them - not to be used inside an element.
220
+ // This mixin makes it such that you can use classes to define buttons on your page.
221
+ // .btn-simple: creates a simple button
222
+ // .btn: creates a fancy button
223
+ // .disabled: disables an existing button (will only work on .btn and .btn-simple)
224
+
225
+ =buttons
226
+ .btn-simple
227
+ +transition(all .2s ease-in-out)
228
+ +simple-button($blue)
229
+ .btn
230
+ +transition(all .2s ease-in-out)
231
+ +button($blue)
232
+ .btn.disabled, .btn-simple.disabled
233
+ +button-disabled
@@ -0,0 +1,41 @@
1
+ // -----------------------------------------------------
2
+ // CODE
3
+ // -----------------------------------------------------
4
+
5
+ // Mixin: Code
6
+ // Styles inline code snippets on your page. Defaults to a beautiful red, but can be passed any color.
7
+ // ex. +code($blue)
8
+ // ex. +code(#7ED45F)
9
+
10
+ =code($color: #DF5C33)
11
+ padding: 3px 4px
12
+ color: $color
13
+ background-color: #F5F5F5
14
+ border: 1px solid #E1E1E8
15
+ border-radius: 3px
16
+ font-family: Menlo, Monaco, monospace
17
+
18
+ // Mixin: Pre
19
+ // Styles code blocks on your page. Sytanx hilighting to be included in the future.
20
+ // ex. +pre
21
+
22
+ =pre
23
+ display: block
24
+ padding: 7px
25
+ background-color: #F5F5F5
26
+ border: 1px solid #E1E1E8
27
+ border-radius: 3px
28
+ white-space: pre-wrap
29
+ word-break: break-all
30
+ font-family: Menlo, Monaco, monospace
31
+ line-height: 160%
32
+
33
+ // Additive Mixin: Code Blocks
34
+ // WARNING: Creates classes in your css and styles them - not to be used inside an element.
35
+ // Adds roots styles by default to <code> and <pre> tags.
36
+
37
+ =code-blocks
38
+ code
39
+ +code
40
+ pre
41
+ +pre
@@ -0,0 +1,209 @@
1
+ // -----------------------------------------------------
2
+ // Forms
3
+ // -----------------------------------------------------
4
+
5
+ // This module is the most severely lacking, just because I'm not totally sure how to
6
+ // handle it - forms are so different. It will probably end up with this basic functionality
7
+ // for custom forms as well as a mixin you can drop on a form and it will style it for you
8
+ // and take care of everything, for something more like an early prototype or back end.
9
+
10
+ // It will also contain the ability to append or prepend little icons to your inputs
11
+
12
+ // Mixin: Focus Glow
13
+ // Makes your inputs glow when focused. Takes a color - they will glow that color. Default color by default.
14
+ // ex. +focus-glow
15
+ // ex. +focus-glow($blue)
16
+ // ex. +focus-glow(#D45D86)
17
+
18
+ =focus-glow($color: $default)
19
+ &:focus
20
+ +box-shadow(0 0 5px rgba($color,.7))
21
+ border: 1px solid desaturate($color, 35%)
22
+ outline: none !important
23
+
24
+ // Mixin: Input
25
+ // A general purpose mixin for text inputs. Provides an nice attractive default style that's easily
26
+ // customizable. Takes a color as the first param and an optional width as the second.
27
+ // ex. +input
28
+ // ex. +input($purple)
29
+ // ex. +input(#D45D86, 400px)
30
+
31
+ =input($color: $light-blue, $width: 250px)
32
+ +box-shadow(inset 0 1px 1px rgba(#000, 0.1))
33
+ font-size: #{$font-size}px
34
+ font-family: $font-stack
35
+ font-size: 90%
36
+ +transition
37
+ border: solid 1px #bbb
38
+ border-radius: 2px
39
+ outline: none !important
40
+ padding: 4px 5px 4px // test this and make sure it's proportional at different sizes
41
+ background: #fff
42
+ color: #555
43
+ width: $width
44
+ text-shadow: 0 0 1px rgba(#fff, .1)
45
+ behavior: asset-url('pie.htc', javascript)
46
+ @if $color != false
47
+ +focus-glow($color)
48
+ @else
49
+ +box-shadow(none)
50
+
51
+ // Mixin: Input Search
52
+ // A search style input with rounded corners and an optional search icon at the end. Takes
53
+ // any color.
54
+ // ex. +input-search
55
+ // ex. +input-search($yellow)
56
+ // ex. +input-search
57
+
58
+ // TODO: Implement search icon option
59
+
60
+ // =field-search
61
+ // position: relative
62
+ // input
63
+ // +input-search
64
+ // &:after
65
+ // font: 16px roots-icons
66
+ // content: icon(arrow_down_alt1)
67
+ // display: block
68
+ // position: absolute
69
+ // top: 8px
70
+ // right: 8px
71
+ // opacity: .5
72
+
73
+ =input-search($color: $blue)
74
+ +input($color)
75
+ padding-left: 9px
76
+ +rounded
77
+
78
+ // Mixin: Input Disabled
79
+ // Makes your input appear to be disabled. Note that you also need to add 'disabled' to your
80
+ // html tag in order for it to actually be disabled.
81
+ // ex. +disabled
82
+
83
+ =input-disabled
84
+ cursor: not-allowed
85
+ background: #F5F5F5 !important
86
+
87
+ &:hover, &:focus
88
+ border-color: #bbb
89
+ +box-shadow(inset 0 1px 1px rgba(#000, 0.1))
90
+
91
+ // Mixin: Label
92
+ // Very basic label for your form. Pass it an optional display type to have it inline or block.
93
+ // ex. +label
94
+
95
+ =label($display: inline-block)
96
+ line-height: 1.5em
97
+ display: $display
98
+
99
+ // Mixin: Field
100
+ // Often times it's easier to wrap your input and label in a div called "field" so they can be
101
+ // floated, position, and manipulated without screwing up the rest of the form. That's what this
102
+ // mixin is for - put it on a div that contains a label and an input. Then feed it a direction to
103
+ // align (default is right), and an optional width.
104
+ // ex. +field
105
+ // ex. +field(left)
106
+ // ex. +field(right, 500px)
107
+
108
+ =field($direction: right, $width: 370px)
109
+ clear: both
110
+ margin-bottom: 5px
111
+ text-align: $direction
112
+ width: $width
113
+
114
+ // Mixin: Input Error
115
+ // When someone F'd it up, you gotta show them how it is. Put this on an input to make it clear
116
+ // that something bad is happening. Best implemented in a .error class or something similar.
117
+ // ex. input.error
118
+ // +input-error
119
+
120
+ =input-error($color: $red)
121
+ color: $color
122
+ border-color: $color
123
+ +focus-glow($color)
124
+
125
+ // Mixin: Field Error
126
+ // If you are wrapping labels and inputs in a field div, this makes life even easier. Makes the
127
+ // label text as well as the input field red.
128
+ // ex. .field.error
129
+ // +field-error
130
+
131
+ =field-error($color: $red)
132
+ color: $color
133
+ input
134
+ +input-error
135
+
136
+ // Mixin: Input Warning
137
+ // Ok, so maybe you didn't totally F it up, but at very least you deserve a warning. Well here it is.
138
+ // Best implemented in a .warning class or something similar.
139
+ // ex. input.warning
140
+ // +input-warning
141
+
142
+ =input-warning($color: $yellow)
143
+ color: $color
144
+ border-color: $color
145
+ +focus-glow($color)
146
+
147
+ // Mixin: Field Warning
148
+ // If you are wrapping labels and inputs in a field div, this makes life even easier. Makes the
149
+ // label text as well as the input field yellow.
150
+ // ex. .field.warning
151
+ // +field-warning
152
+
153
+ =field-warning($color: $yellow)
154
+ color: $color
155
+ input
156
+ +input-warning
157
+
158
+ // Mixin: Input Success
159
+ // http://cl.ly/F4Em/great-success.jpeg - Best implemented in a .success class or something similar.
160
+ // ex. input.success
161
+ // +input-success
162
+
163
+ =input-success($color: $green)
164
+ color: $color
165
+ border-color: $color
166
+ +focus-glow($color)
167
+
168
+ // Mixin: Field Success
169
+ // You're probably getting tired of this routine at this point. I'm sure you can imagine what this does.
170
+ // ex. .field.success
171
+ // +field-success
172
+
173
+ =field-success($color: $green)
174
+ color: $color
175
+ input
176
+ +input-success
177
+
178
+ // Additive Mixin: Fields
179
+ // WARNING: Creates classes in your css and styles them - not to be used inside an element.
180
+ // Add the field styles to .field as well as success, warning, and failure states. Also takes
181
+ // direction and width. Highly recommended mixin.
182
+
183
+ =fields($direction: right, $width: 370px)
184
+ .field
185
+ +field($direction, $width)
186
+
187
+ &.success
188
+ +field-success
189
+ &.warning
190
+ +field-warning
191
+ &.error
192
+ +field-error
193
+
194
+ // Additive Mixin: Forms
195
+ // WARNING: Creates classes in your css and styles them - not to be used inside an element.
196
+ // Adds nicer looking styles to all text inputs and textareas. Overrides the defaults.
197
+
198
+ =forms
199
+ input[type=text], input[type=email], input[type=number], input[type=date], input[type=time], input[type=datetime], textarea
200
+ +input
201
+
202
+ &.disabled
203
+ +input-disabled
204
+ &.success
205
+ +input-success
206
+ &.warning
207
+ +input-warning
208
+ &.error
209
+ +input-error