themepile-abstractio 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +28 -0
  3. data/.rbenv-version +1 -0
  4. data/CONTRIBUTING.md +53 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +22 -0
  7. data/README.md +136 -0
  8. data/Rakefile +2 -0
  9. data/abstractio.gemspec +18 -0
  10. data/js/foundation/foundation.alerts.js +50 -0
  11. data/js/foundation/foundation.clearing.js +516 -0
  12. data/js/foundation/foundation.cookie.js +74 -0
  13. data/js/foundation/foundation.dropdown.js +159 -0
  14. data/js/foundation/foundation.forms.js +516 -0
  15. data/js/foundation/foundation.joyride.js +842 -0
  16. data/js/foundation/foundation.js +403 -0
  17. data/js/foundation/foundation.magellan.js +130 -0
  18. data/js/foundation/foundation.orbit.js +373 -0
  19. data/js/foundation/foundation.placeholder.js +159 -0
  20. data/js/foundation/foundation.reveal.js +276 -0
  21. data/js/foundation/foundation.section.js +409 -0
  22. data/js/foundation/foundation.tooltips.js +206 -0
  23. data/js/foundation/foundation.topbar.js +252 -0
  24. data/js/foundation/index.js +16 -0
  25. data/js/vendor/custom.modernizr.js +4 -0
  26. data/js/vendor/jquery.js +9597 -0
  27. data/js/vendor/zepto.js +1884 -0
  28. data/lib/abstractio.rb +17 -0
  29. data/lib/abstractio/engine.rb +20 -0
  30. data/lib/abstractio/generators/USAGE +15 -0
  31. data/lib/abstractio/generators/install_generator.rb +54 -0
  32. data/lib/abstractio/generators/templates/application.html.erb +46 -0
  33. data/lib/abstractio/generators/templates/application.html.haml +31 -0
  34. data/lib/abstractio/generators/templates/application.html.slim +28 -0
  35. data/lib/abstractio/version.rb +3 -0
  36. data/lib/themepile-abstractio.rb +17 -0
  37. data/scss/abstractio.scss +46 -0
  38. data/scss/abstractio/_variables.scss +1224 -0
  39. data/scss/abstractio/components/_alert-boxes.scss +107 -0
  40. data/scss/abstractio/components/_block-grid.scss +68 -0
  41. data/scss/abstractio/components/_breadcrumbs.scss +125 -0
  42. data/scss/abstractio/components/_button-groups.scss +89 -0
  43. data/scss/abstractio/components/_buttons.scss +227 -0
  44. data/scss/abstractio/components/_clearing.scss +224 -0
  45. data/scss/abstractio/components/_custom-forms.scss +263 -0
  46. data/scss/abstractio/components/_dropdown-buttons.scss +115 -0
  47. data/scss/abstractio/components/_dropdown.scss +150 -0
  48. data/scss/abstractio/components/_flex-video.scss +46 -0
  49. data/scss/abstractio/components/_forms.scss +362 -0
  50. data/scss/abstractio/components/_global.scss +280 -0
  51. data/scss/abstractio/components/_grid.scss +186 -0
  52. data/scss/abstractio/components/_inline-lists.scss +53 -0
  53. data/scss/abstractio/components/_joyride.scss +215 -0
  54. data/scss/abstractio/components/_keystrokes.scss +57 -0
  55. data/scss/abstractio/components/_labels.scss +85 -0
  56. data/scss/abstractio/components/_magellan.scss +23 -0
  57. data/scss/abstractio/components/_orbit.scss +213 -0
  58. data/scss/abstractio/components/_pagination.scss +100 -0
  59. data/scss/abstractio/components/_panels.scss +77 -0
  60. data/scss/abstractio/components/_pricing-tables.scss +131 -0
  61. data/scss/abstractio/components/_progress-bars.scss +71 -0
  62. data/scss/abstractio/components/_reveal.scss +132 -0
  63. data/scss/abstractio/components/_section.scss +318 -0
  64. data/scss/abstractio/components/_side-nav.scss +69 -0
  65. data/scss/abstractio/components/_split-buttons.scss +167 -0
  66. data/scss/abstractio/components/_sub-nav.scss +68 -0
  67. data/scss/abstractio/components/_switch.scss +251 -0
  68. data/scss/abstractio/components/_tables.scss +84 -0
  69. data/scss/abstractio/components/_thumbs.scss +48 -0
  70. data/scss/abstractio/components/_tooltips.scss +117 -0
  71. data/scss/abstractio/components/_top-bar.scss +495 -0
  72. data/scss/abstractio/components/_type.scss +426 -0
  73. data/scss/abstractio/components/_visibility.scss +322 -0
  74. data/scss/normalize.scss +402 -0
  75. data/templates/project/.gitignore +44 -0
  76. data/templates/project/MIT-LICENSE.txt +20 -0
  77. data/templates/project/config.rb +26 -0
  78. data/templates/project/humans.txt +8 -0
  79. data/templates/project/index.html +124 -0
  80. data/templates/project/manifest.rb +45 -0
  81. data/templates/project/robots.txt +4 -0
  82. data/templates/project/scss/app.scss +48 -0
  83. data/templates/upgrade/manifest.rb +34 -0
  84. metadata +153 -0
@@ -0,0 +1,318 @@
1
+ //
2
+ // Section Variables
3
+ //
4
+ $include-html-section-classes: $include-html-classes !default;
5
+
6
+ // We use these to set padding and hover factor
7
+ $section-title-padding: emCalc(15px) !default;
8
+ $section-content-padding: emCalc(15px) !default;
9
+ $section-function-factor: 10% !default;
10
+
11
+ // These style the titles
12
+ $section-title-color: #333 !default;
13
+ $section-title-bg: #efefef !default;
14
+ $section-title-bg-active: darken($section-title-bg, $section-function-factor) !default;
15
+ $section-title-bg-active-tabs: #fff !default;
16
+ $section-title-bg-hover: darken($section-title-bg, $section-function-factor/2) !default;
17
+
18
+ // Want to control border size, here ya go!
19
+ $section-border-size: 1px !default;
20
+ $section-border-style: solid !default;
21
+ $section-border-color: #ccc !default;
22
+
23
+ // Font controls
24
+ $section-font-size: emCalc(14px) !default;
25
+
26
+ // Control the color of the background and some size options
27
+ $section-content-bg: #fff !default;
28
+ $section-vertical-nav-min-width: emCalc(200px) !default;
29
+ $section-vertical-tabs-title-width: emCalc(200px) !default;
30
+ $section-bottom-margin: emCalc(20px) !default;
31
+
32
+
33
+ //
34
+ // Section Mixins
35
+ //
36
+
37
+ // We use this mixin to create the basic container styles for sections when they act like accordions
38
+ @mixin section-container($base-style:true, $section-type:accordion) {
39
+
40
+ /// We can set this to false to not include these styles to avoid repeated CSS on classes.
41
+ @if $base-style {
42
+ width: 100%;
43
+ display: block;
44
+ margin-bottom: $section-bottom-margin;
45
+ }
46
+
47
+ // Accordion container border styles
48
+ @if $section-type == accordion {
49
+ border: $section-border-size $section-border-style $section-border-color;
50
+ border-top: none;
51
+ }
52
+
53
+ // Tabs container border styles
54
+ @else if $section-type == tabs {
55
+ border: 0;
56
+ position: relative;
57
+ }
58
+
59
+ // Vertical Tabs container border styles
60
+ @else if $section-type == vertical-tabs {
61
+ border: $section-border-size $section-border-style $section-border-color;
62
+ position: relative;
63
+ }
64
+
65
+ // Vertical Nav container border styles
66
+ @else if $section-type == vertical-nav {
67
+ border: 0;
68
+ position: relative;
69
+ }
70
+
71
+ // Horizontal Nav container border styles
72
+ @else if $section-type == horizontal-nav {
73
+ position: relative;
74
+ background: $section-title-bg;
75
+ border: $section-border-size $section-border-style $section-border-color;
76
+ }
77
+
78
+ }
79
+
80
+
81
+ @mixin section($section-type:accordion, $title-selector:".title", $content-selector:".content", $title-padding:$section-title-padding, $title-color:$section-title-color, $title-font-size:$section-font-size, $title-bg:$section-title-bg, $title-bg-hover:$section-title-bg-hover, $title-bg-active:$section-title-bg-active, $title-color-active:$section-title-color, $content-bg:$section-content-bg, $content-padding:$section-content-padding, $section-border-size:$section-border-size, $section-border-style:$section-border-style, $section-border-color: $section-border-color) {
82
+
83
+ // Default Styles
84
+ > #{$title-selector} {
85
+ background-color: $title-bg;
86
+ cursor: pointer;
87
+ margin-bottom: 0;
88
+
89
+ a {
90
+ padding: $title-padding;
91
+ display: inline-block;
92
+ color: $title-color;
93
+ font-size: $title-font-size;
94
+ white-space: nowrap;
95
+ }
96
+ &:hover { background-color: $title-bg-hover; }
97
+ }
98
+
99
+ #{$content-selector} {
100
+ display: none;
101
+ padding: $content-padding;
102
+ background-color: $content-bg;
103
+
104
+ &>*:last-child { margin-bottom: 0; }
105
+ &>*:first-child { padding-top: 0; }
106
+ &>*:last-child { padding-bottom: 0; }
107
+ }
108
+
109
+ &.active {
110
+ & > #{$content-selector} { display: block; }
111
+ & > #{$title-selector} { background: $title-bg-active;
112
+ a { color: $title-color-active; }
113
+ }
114
+ }
115
+
116
+ // Style for when Accordion
117
+ @if $section-type == accordion {
118
+ // border-top: $section-border-size $section-border-style $section-border-color;
119
+ position: relative;
120
+
121
+ > #{$title-selector} {
122
+ top: 0;
123
+ width: 100%;
124
+ margin: 0;
125
+ border-top: $section-border-style $section-border-size $section-border-color;
126
+
127
+ a { width: 100%; }
128
+ }
129
+ }
130
+
131
+ // Styles for when tabs
132
+ @else if $section-type == tabs {
133
+ border: 0;
134
+ position: static;
135
+
136
+ > #{$title-selector} {
137
+ width: auto;
138
+ border: $section-border-style $section-border-size $section-border-color;
139
+ border-#{$opposite-direction}: 0;
140
+ border-bottom: 0;
141
+ position: absolute;
142
+ top: 0;
143
+ z-index: 1;
144
+
145
+ a { width: 100%; }
146
+ }
147
+ &:last-child #{$title-selector} { border-#{$opposite-direction}: $section-border-style $section-border-size $section-border-color; }
148
+
149
+ #{$content-selector} {
150
+ border: $section-border-style $section-border-size $section-border-color;
151
+ position: absolute;
152
+ z-index: 10;
153
+ display: none;
154
+ top: -1px;
155
+ }
156
+
157
+ &.active {
158
+ & > #{$title-selector} {
159
+ z-index: 11;
160
+ border-bottom: 0;
161
+ background-color: $title-bg-active;
162
+ }
163
+ & > #{$content-selector} { position: relative; }
164
+ }
165
+ }
166
+
167
+ // Styles for when Vertical Tabs
168
+ @else if $section-type == vertical-tabs {
169
+ padding-top: 0 !important;
170
+ border: 0;
171
+ position: static;
172
+
173
+ > #{$title-selector} {
174
+ position: absolute;
175
+ border-top: $section-border-style $section-border-size $section-border-color;
176
+ width: $section-vertical-tabs-title-width;
177
+ }
178
+ &:first-child #{$title-selector} { border-top: 0; }
179
+
180
+ #{$content-selector} {
181
+ // Display all content blocks to account for the scrollbar
182
+ // in the outerWidth measurements. JavaScript will toggle the active tabs.
183
+ display: block;
184
+ position: relative;
185
+ left: $section-vertical-tabs-title-width;
186
+ border-left: $section-border-style $section-border-size $section-border-color;
187
+ z-index: 10;
188
+ }
189
+
190
+ &.active {
191
+ & > #{$title-selector} {
192
+ background-color: $title-bg-active;
193
+ width: $section-vertical-tabs-title-width + emCalc(1px); // Cover the content's left border
194
+ border-right: solid 0 transparent;
195
+ z-index: 11; // Put active title on top of the content
196
+ }
197
+ &:last-child #{$title-selector} { border-bottom: 0; }
198
+ }
199
+ }
200
+
201
+ // Styles for when Vertical Nav
202
+ @else if $section-type == vertical-nav {
203
+ padding-top: 0 !important;
204
+ position: relative;
205
+
206
+ > #{$title-selector} {
207
+ border-top: none;
208
+ border: $section-border-style $section-border-size $section-border-color;
209
+
210
+ a {
211
+ display: block;
212
+ width: 100%;
213
+ }
214
+ }
215
+ #{$content-selector} { display: none; }
216
+ &:first-child #{$title-selector} { border-bottom: none; }
217
+
218
+ &.active {
219
+ & > #{$content-selector} {
220
+ display: block;
221
+ position: absolute;
222
+ #{$default-float}: 100%;
223
+ top: 0px;
224
+ z-index: 999;
225
+ min-width: $section-vertical-nav-min-width;
226
+ border: $section-border-style $section-border-size $section-border-color;
227
+ }
228
+ }
229
+ }
230
+
231
+ // Styles for when Horizontal Nav
232
+ @else if $section-type == horizontal-nav {
233
+ padding-top: 0;
234
+ border: 0;
235
+ position: static;
236
+
237
+ > #{$title-selector} {
238
+ width: auto;
239
+ border: $section-border-style $section-border-size $section-border-color;
240
+ border-#{$default-float}: 0;
241
+ top: -1px;
242
+ position: absolute;
243
+ z-index: 1;
244
+
245
+ a { width: 100%; }
246
+ }
247
+
248
+ #{$content-selector} { display: none; }
249
+
250
+ &.active {
251
+ & > #{$content-selector} {
252
+ display: block;
253
+ position: absolute;
254
+ z-index: 999;
255
+ #{$default-float}: 0;
256
+ top: -2px;
257
+ min-width: $section-vertical-nav-min-width;
258
+ border: $section-border-style $section-border-size $section-border-color;
259
+ }
260
+ }
261
+ }
262
+
263
+ }
264
+
265
+
266
+
267
+ @if $include-html-section-classes != false {
268
+
269
+ /* Sections */
270
+ .section-container, .section-container.auto {
271
+ @include section-container(accordion);
272
+
273
+ &>section,
274
+ &>.section { @include section(accordion); }
275
+ }
276
+
277
+ .section-container.tabs {
278
+ @include section-container(false, tabs);
279
+
280
+ &>section,
281
+ &>.section { @include section(tabs, $title-bg-active:#fff); }
282
+ }
283
+
284
+ @media #{$small} {
285
+
286
+ .section-container.auto {
287
+ @include section-container(false, tabs);
288
+
289
+ &>section,
290
+ &>.section { @include section(tabs, $title-bg-active:#fff); }
291
+ }
292
+ .section-container.accordion .section {
293
+ padding-top: 0 !important;
294
+ }
295
+
296
+ .section-container.vertical-tabs {
297
+ @include section-container(false, vertical-tabs);
298
+
299
+ section,
300
+ .section { @include section(vertical-tabs); }
301
+ }
302
+
303
+ .section-container.vertical-nav {
304
+ @include section-container(false, vertical-nav);
305
+
306
+ &>section,
307
+ &>.section { @include section(vertical-nav); }
308
+ }
309
+
310
+ .section-container.horizontal-nav {
311
+ @include section-container(false, horizontal-nav);
312
+
313
+ &>section,
314
+ &>.section { @include section(horizontal-nav); }
315
+ }
316
+ }
317
+
318
+ }
@@ -0,0 +1,69 @@
1
+ //
2
+ // Side Nav Variables
3
+ //
4
+ $include-html-nav-classes: $include-html-classes !default;
5
+
6
+ // We use this to control padding.
7
+ $side-nav-padding: emCalc(14px) 0 !default;
8
+
9
+ // We use these to control list styles.
10
+ $side-nav-list-type: none !default;
11
+ $side-nav-list-position: inside !default;
12
+ $side-nav-list-margin: 0 0 emCalc(7px) 0 !default;
13
+
14
+ // We use these to control link styles.
15
+ $side-nav-link-color: $primary-color !default;
16
+ $side-nav-link-color-active: lighten(#000, 30%) !default;
17
+ $side-nav-font-size: emCalc(14px) !default;
18
+ $side-nav-font-weight: bold !default;
19
+
20
+ // We use these to control border styles
21
+ $side-nav-divider-size: 1px !default;
22
+ $side-nav-divider-style: solid !default;
23
+ $side-nav-divider-color: darken(#fff, 10%) !default;
24
+
25
+
26
+ //
27
+ // Side Nav Mixins
28
+ //
29
+
30
+
31
+ // We use this to style the side-nav
32
+ @mixin side-nav($divider-color:$side-nav-divider-color, $font-size:$side-nav-font-size, $link-color:$side-nav-link-color) {
33
+ display: block;
34
+ margin: 0;
35
+ padding: $side-nav-padding;
36
+ list-style-type: $side-nav-list-type;
37
+ list-style-position: $side-nav-list-position;
38
+
39
+ li {
40
+ margin: $side-nav-list-margin;
41
+ font-size: $font-size;
42
+
43
+ a {
44
+ display: block;
45
+ color: $link-color;
46
+ }
47
+
48
+ &.active > a:first-child {
49
+ color: $side-nav-link-color-active;
50
+ font-weight: $side-nav-font-weight;
51
+ }
52
+
53
+ &.divider {
54
+ border-top: $side-nav-divider-size $side-nav-divider-style;
55
+ height: 0;
56
+ padding: 0;
57
+ list-style: none;
58
+ border-top-color: $divider-color;
59
+ }
60
+ }
61
+ }
62
+
63
+
64
+ @if $include-html-nav-classes != false {
65
+
66
+ /* Side Nav */
67
+ .side-nav { @include side-nav; }
68
+
69
+ }
@@ -0,0 +1,167 @@
1
+ //
2
+ // Split Button Variables
3
+ //
4
+ $include-html-button-classes: $include-html-classes !default;
5
+
6
+ // We use these to control different shared styles for Split Buttons
7
+ $split-button-function-factor: 15% !default;
8
+ $split-button-pip-color: #fff !default;
9
+ $split-button-pip-color-alt: #333 !default;
10
+ $split-button-active-bg-tint: rgba(0,0,0,0.1) !default;
11
+
12
+ // We use these to control tiny split buttons
13
+ $split-button-padding-tny: $button-tny * 9 !default;
14
+ $split-button-span-width-tny: $button-tny * 6.5 !default;
15
+ $split-button-pip-size-tny: $button-tny !default;
16
+ $split-button-pip-top-tny: $button-tny * 2 !default;
17
+ $split-button-pip-default-float-tny: emCalc(-5px) !default;
18
+
19
+ // We use these to control small split buttons
20
+ $split-button-padding-sml: $button-sml * 7 !default;
21
+ $split-button-span-width-sml: $button-sml * 5 !default;
22
+ $split-button-pip-size-sml: $button-sml !default;
23
+ $split-button-pip-top-sml: $button-sml * 1.5 !default;
24
+ $split-button-pip-default-float-sml: emCalc(-9px) !default;
25
+
26
+ // We use these to control medium split buttons
27
+ $split-button-padding-med: $button-med * 6.4 !default;
28
+ $split-button-span-width-med: $button-med * 4 !default;
29
+ $split-button-pip-size-med: $button-med - emCalc(3px) !default;
30
+ $split-button-pip-top-med: $button-med * 1.5 !default;
31
+ $split-button-pip-default-float-med: emCalc(-9px) !default;
32
+
33
+ // We use these to control large split buttons
34
+ $split-button-padding-lrg: $button-lrg * 6 !default;
35
+ $split-button-span-width-lrg: $button-lrg * 3.75 !default;
36
+ $split-button-pip-size-lrg: $button-lrg - emCalc(6px) !default;
37
+ $split-button-pip-top-lrg: $button-lrg + emCalc(5px) !default;
38
+ $split-button-pip-default-float-lrg: emCalc(-9px) !default;
39
+
40
+
41
+ //
42
+ // Split Button Mixin
43
+ //
44
+
45
+ // We use this mixin to create split buttons that build upon the button mixins
46
+ @mixin split-button($padding:medium, $pip-color:$split-button-pip-color, $span-border:$primary-color, $base-style:true) {
47
+
48
+ // With this, we can control whether or not the base styles come through.
49
+ @if $base-style {
50
+ position: relative;
51
+
52
+ // Styling for the split arrow clickable area
53
+ span {
54
+ display: block;
55
+ height: 100%;
56
+ position: absolute;
57
+ #{$opposite-direction}: 0;
58
+ top: 0;
59
+ border-#{$default-float}: solid 1px;
60
+
61
+ // Building the triangle pip indicator
62
+ &:before {
63
+ position: absolute;
64
+ content: "";
65
+ width: 0;
66
+ height: 0;
67
+ display: block;
68
+ border-style: inset;
69
+
70
+ #{$default-float}: 50%;
71
+ }
72
+
73
+ &:active { background-color: $split-button-active-bg-tint; }
74
+ }
75
+ }
76
+
77
+ // Control the border color for the span area of the split button
78
+ @if $span-border {
79
+ span {
80
+ border-#{$default-float}-color: darken($span-border, $split-button-function-factor);
81
+ }
82
+ }
83
+
84
+ // Style of the button and clickable area for tiny sizes
85
+ @if $padding == tiny {
86
+ padding-#{$opposite-direction}: $split-button-padding-tny;
87
+
88
+ span { width: $split-button-span-width-tny;
89
+ &:before {
90
+ border-top-style: solid;
91
+ border-width: $split-button-pip-size-tny;
92
+ top: $split-button-pip-top-tny;
93
+ margin-#{$default-float}: $split-button-pip-default-float-tny;
94
+ }
95
+ }
96
+ }
97
+
98
+ // Style of the button and clickable area for small sizes
99
+ @else if $padding == small {
100
+ padding-#{$opposite-direction}: $split-button-padding-sml;
101
+
102
+ span { width: $split-button-span-width-sml;
103
+ &:before {
104
+ border-top-style: solid;
105
+ border-width: $split-button-pip-size-sml;
106
+ top: $split-button-pip-top-sml;
107
+ margin-#{$default-float}: $split-button-pip-default-float-sml;
108
+ }
109
+ }
110
+ }
111
+
112
+ // Style of the button and clickable area for default (medium) sizes
113
+ @else if $padding == medium {
114
+ padding-#{$opposite-direction}: $split-button-padding-med;
115
+
116
+ span { width: $split-button-span-width-med;
117
+ &:before {
118
+ border-top-style: solid;
119
+ border-width: $split-button-pip-size-med;
120
+ top: $split-button-pip-top-med;
121
+ margin-#{$default-float}: $split-button-pip-default-float-med;
122
+ }
123
+ }
124
+ }
125
+
126
+ // Style of the button and clickable area for large sizes
127
+ @else if $padding == large {
128
+ padding-#{$opposite-direction}: $split-button-padding-lrg;
129
+
130
+ span { width: $split-button-span-width-lrg;
131
+ &:before {
132
+ border-top-style: solid;
133
+ border-width: $split-button-pip-size-lrg;
134
+ top: $split-button-pip-top-lrg;
135
+ margin-#{$default-float}: $split-button-pip-default-float-lrg;
136
+ }
137
+ }
138
+ }
139
+
140
+ // Control the color of the triangle pip
141
+ @if $pip-color {
142
+ span:before { border-color: $pip-color transparent transparent transparent; }
143
+ }
144
+ }
145
+
146
+
147
+ @if $include-html-button-classes != false {
148
+
149
+ /* Split Buttons */
150
+ .split.button { @include split-button;
151
+
152
+ &.secondary { @include split-button(false, $split-button-pip-color, $secondary-color, false); }
153
+ &.alert { @include split-button(false, false, $alert-color, false); }
154
+ &.success { @include split-button(false, false, $success-color, false); }
155
+
156
+ &.tiny { @include split-button(tiny, false, false, false); }
157
+ &.small { @include split-button(small, false, false, false); }
158
+ &.large { @include split-button(large, false, false, false); }
159
+ &.expand { padding-left: 2em; }
160
+
161
+ &.secondary { @include split-button(false, $split-button-pip-color-alt, false, false); }
162
+
163
+ &.radius span { @include side-radius($opposite-direction, $global-radius); }
164
+ &.round span { @include side-radius($opposite-direction, 1000px); }
165
+ }
166
+
167
+ }