shoestrap-rails 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/Gemfile +3 -0
- data/LICENSE.md +22 -0
- data/README.md +3 -0
- data/Rakefile +80 -0
- data/assets/stylesheets/_shoestrap.scss +23 -0
- data/assets/stylesheets/shoestrap/_grid.scss +84 -0
- data/assets/stylesheets/shoestrap/_mixins.scss +18 -0
- data/assets/stylesheets/shoestrap/_normalize.scss +427 -0
- data/assets/stylesheets/shoestrap/_print.scss +90 -0
- data/assets/stylesheets/shoestrap/_scaffolding.scss +161 -0
- data/assets/stylesheets/shoestrap/_type.scss +299 -0
- data/assets/stylesheets/shoestrap/_utilities.scss +21 -0
- data/assets/stylesheets/shoestrap/_variables.scss +240 -0
- data/assets/stylesheets/shoestrap/mixins/_background-variant.scss +12 -0
- data/assets/stylesheets/shoestrap/mixins/_clearfix.scss +22 -0
- data/assets/stylesheets/shoestrap/mixins/_grid-framework.scss +81 -0
- data/assets/stylesheets/shoestrap/mixins/_grid.scss +122 -0
- data/assets/stylesheets/shoestrap/mixins/_image.scss +33 -0
- data/assets/stylesheets/shoestrap/mixins/_reset-text.scss +18 -0
- data/assets/stylesheets/shoestrap/mixins/_tab-focus.scss +9 -0
- data/assets/stylesheets/shoestrap/mixins/_text-emphasis.scss +12 -0
- data/assets/stylesheets/shoestrap/mixins/_text-overflow.scss +8 -0
- data/assets/stylesheets/shoestrap/mixins/_vendor-prefixes.scss +222 -0
- data/lib/shoestrap-rails.rb +57 -0
- data/lib/shoestrap-rails/engine.rb +9 -0
- data/lib/shoestrap-rails/version.rb +3 -0
- data/shoestrap-rails.gemspec +35 -0
- data/test/compilation_test.rb +18 -0
- data/test/dummy_rails/README.rdoc +3 -0
- data/test/dummy_rails/Rakefile +6 -0
- data/test/dummy_rails/app/assets/images/.keep +0 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +1 -0
- data/test/dummy_rails/app/assets/stylesheets/application.sass +1 -0
- data/test/dummy_rails/app/controllers/application_controller.rb +5 -0
- data/test/dummy_rails/app/controllers/pages_controller.rb +4 -0
- data/test/dummy_rails/app/helpers/application_helper.rb +2 -0
- data/test/dummy_rails/app/views/layouts/application.html.erb +14 -0
- data/test/dummy_rails/app/views/pages/root.html.slim +84 -0
- data/test/dummy_rails/config.ru +4 -0
- data/test/dummy_rails/config/application.rb +30 -0
- data/test/dummy_rails/config/boot.rb +5 -0
- data/test/dummy_rails/config/environment.rb +5 -0
- data/test/dummy_rails/config/environments/development.rb +23 -0
- data/test/dummy_rails/config/environments/production.rb +82 -0
- data/test/dummy_rails/config/environments/test.rb +38 -0
- data/test/dummy_rails/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy_rails/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy_rails/config/initializers/inflections.rb +16 -0
- data/test/dummy_rails/config/initializers/mime_types.rb +5 -0
- data/test/dummy_rails/config/initializers/secret_token.rb +18 -0
- data/test/dummy_rails/config/initializers/session_store.rb +3 -0
- data/test/dummy_rails/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy_rails/config/locales/en.yml +3 -0
- data/test/dummy_rails/config/locales/es.yml +3 -0
- data/test/dummy_rails/config/routes.rb +3 -0
- data/test/dummy_rails/log/.keep +0 -0
- data/test/dummy_rails/log/production.log +0 -0
- data/test/dummy_rails/log/test.log +264 -0
- data/test/dummy_sass_only/Gemfile +4 -0
- data/test/dummy_sass_only/compile.rb +13 -0
- data/test/dummy_sass_only/import_all.sass +1 -0
- data/test/gemfiles/rails_head.gemfile +17 -0
- data/test/gemfiles/rails_head.gemfile.lock +214 -0
- data/test/gemfiles/sass_3_3.gemfile +6 -0
- data/test/gemfiles/sass_3_3.gemfile.lock +171 -0
- data/test/gemfiles/sass_3_4.gemfile +7 -0
- data/test/gemfiles/sass_3_4.gemfile.lock +171 -0
- data/test/gemfiles/sass_head.gemfile +6 -0
- data/test/gemfiles/sass_head.gemfile.lock +183 -0
- data/test/pages_test.rb +15 -0
- data/test/sass_test.rb +22 -0
- data/test/sprockets_rails_test.rb +27 -0
- data/test/support/dummy_rails_integration.rb +22 -0
- data/test/support/reporting.rb +27 -0
- data/test/test_helper.rb +36 -0
- data/test/test_helper_rails.rb +6 -0
- metadata +352 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
// Image Mixins
|
2
|
+
// - Responsive image
|
3
|
+
// - Retina image
|
4
|
+
|
5
|
+
|
6
|
+
// Responsive image
|
7
|
+
//
|
8
|
+
// Keep images from scaling beyond the width of their parents.
|
9
|
+
@mixin img-responsive($display: block) {
|
10
|
+
display: $display;
|
11
|
+
max-width: 100%; // Part 1: Set a maximum relative to the parent
|
12
|
+
height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
// Retina image
|
17
|
+
//
|
18
|
+
// Short retina mixin for setting background-image and -size. Note that the
|
19
|
+
// spelling of `min--moz-device-pixel-ratio` is intentional.
|
20
|
+
@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
|
21
|
+
background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}"));
|
22
|
+
|
23
|
+
@media
|
24
|
+
only screen and (-webkit-min-device-pixel-ratio: 2),
|
25
|
+
only screen and ( min--moz-device-pixel-ratio: 2),
|
26
|
+
only screen and ( -o-min-device-pixel-ratio: 2/1),
|
27
|
+
only screen and ( min-device-pixel-ratio: 2),
|
28
|
+
only screen and ( min-resolution: 192dpi),
|
29
|
+
only screen and ( min-resolution: 2dppx) {
|
30
|
+
background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}"));
|
31
|
+
background-size: $width-1x $height-1x;
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
@mixin reset-text() {
|
2
|
+
font-family: $font-family-base;
|
3
|
+
// We deliberately do NOT reset font-size.
|
4
|
+
font-style: normal;
|
5
|
+
font-weight: normal;
|
6
|
+
letter-spacing: normal;
|
7
|
+
line-break: auto;
|
8
|
+
line-height: $line-height-base;
|
9
|
+
text-align: left; // Fallback for where `start` is not supported
|
10
|
+
text-align: start;
|
11
|
+
text-decoration: none;
|
12
|
+
text-shadow: none;
|
13
|
+
text-transform: none;
|
14
|
+
white-space: normal;
|
15
|
+
word-break: normal;
|
16
|
+
word-spacing: normal;
|
17
|
+
word-wrap: normal;
|
18
|
+
}
|
@@ -0,0 +1,222 @@
|
|
1
|
+
// Vendor Prefixes
|
2
|
+
//
|
3
|
+
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
|
4
|
+
// Autoprefixer in our Gruntfile. They have been removed in v4.
|
5
|
+
|
6
|
+
// - Animations
|
7
|
+
// - Backface visibility
|
8
|
+
// - Box shadow
|
9
|
+
// - Box sizing
|
10
|
+
// - Content columns
|
11
|
+
// - Hyphens
|
12
|
+
// - Placeholder text
|
13
|
+
// - Transformations
|
14
|
+
// - Transitions
|
15
|
+
// - User Select
|
16
|
+
|
17
|
+
|
18
|
+
// Animations
|
19
|
+
@mixin animation($animation) {
|
20
|
+
-webkit-animation: $animation;
|
21
|
+
-o-animation: $animation;
|
22
|
+
animation: $animation;
|
23
|
+
}
|
24
|
+
@mixin animation-name($name) {
|
25
|
+
-webkit-animation-name: $name;
|
26
|
+
animation-name: $name;
|
27
|
+
}
|
28
|
+
@mixin animation-duration($duration) {
|
29
|
+
-webkit-animation-duration: $duration;
|
30
|
+
animation-duration: $duration;
|
31
|
+
}
|
32
|
+
@mixin animation-timing-function($timing-function) {
|
33
|
+
-webkit-animation-timing-function: $timing-function;
|
34
|
+
animation-timing-function: $timing-function;
|
35
|
+
}
|
36
|
+
@mixin animation-delay($delay) {
|
37
|
+
-webkit-animation-delay: $delay;
|
38
|
+
animation-delay: $delay;
|
39
|
+
}
|
40
|
+
@mixin animation-iteration-count($iteration-count) {
|
41
|
+
-webkit-animation-iteration-count: $iteration-count;
|
42
|
+
animation-iteration-count: $iteration-count;
|
43
|
+
}
|
44
|
+
@mixin animation-direction($direction) {
|
45
|
+
-webkit-animation-direction: $direction;
|
46
|
+
animation-direction: $direction;
|
47
|
+
}
|
48
|
+
@mixin animation-fill-mode($fill-mode) {
|
49
|
+
-webkit-animation-fill-mode: $fill-mode;
|
50
|
+
animation-fill-mode: $fill-mode;
|
51
|
+
}
|
52
|
+
|
53
|
+
// Backface visibility
|
54
|
+
// Prevent browsers from flickering when using CSS 3D transforms.
|
55
|
+
// Default value is `visible`, but can be changed to `hidden`
|
56
|
+
|
57
|
+
@mixin backface-visibility($visibility) {
|
58
|
+
-webkit-backface-visibility: $visibility;
|
59
|
+
-moz-backface-visibility: $visibility;
|
60
|
+
backface-visibility: $visibility;
|
61
|
+
}
|
62
|
+
|
63
|
+
// Drop shadows
|
64
|
+
//
|
65
|
+
// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
|
66
|
+
// supported browsers that have box shadow capabilities now support it.
|
67
|
+
|
68
|
+
@mixin box-shadow($shadow...) {
|
69
|
+
-webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
|
70
|
+
box-shadow: $shadow;
|
71
|
+
}
|
72
|
+
|
73
|
+
// Box sizing
|
74
|
+
@mixin box-sizing($boxmodel) {
|
75
|
+
-webkit-box-sizing: $boxmodel;
|
76
|
+
-moz-box-sizing: $boxmodel;
|
77
|
+
box-sizing: $boxmodel;
|
78
|
+
}
|
79
|
+
|
80
|
+
// CSS3 Content Columns
|
81
|
+
@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
|
82
|
+
-webkit-column-count: $column-count;
|
83
|
+
-moz-column-count: $column-count;
|
84
|
+
column-count: $column-count;
|
85
|
+
-webkit-column-gap: $column-gap;
|
86
|
+
-moz-column-gap: $column-gap;
|
87
|
+
column-gap: $column-gap;
|
88
|
+
}
|
89
|
+
|
90
|
+
// Optional hyphenation
|
91
|
+
@mixin hyphens($mode: auto) {
|
92
|
+
word-wrap: break-word;
|
93
|
+
-webkit-hyphens: $mode;
|
94
|
+
-moz-hyphens: $mode;
|
95
|
+
-ms-hyphens: $mode; // IE10+
|
96
|
+
-o-hyphens: $mode;
|
97
|
+
hyphens: $mode;
|
98
|
+
}
|
99
|
+
|
100
|
+
// Placeholder text
|
101
|
+
@mixin placeholder($color: $input-color-placeholder) {
|
102
|
+
// Firefox
|
103
|
+
&::-moz-placeholder {
|
104
|
+
color: $color;
|
105
|
+
opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
|
106
|
+
}
|
107
|
+
&:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
|
108
|
+
&::-webkit-input-placeholder { color: $color; } // Safari and Chrome
|
109
|
+
}
|
110
|
+
|
111
|
+
// Transformations
|
112
|
+
@mixin scale($ratio...) {
|
113
|
+
-webkit-transform: scale($ratio);
|
114
|
+
-ms-transform: scale($ratio); // IE9 only
|
115
|
+
-o-transform: scale($ratio);
|
116
|
+
transform: scale($ratio);
|
117
|
+
}
|
118
|
+
|
119
|
+
@mixin scaleX($ratio) {
|
120
|
+
-webkit-transform: scaleX($ratio);
|
121
|
+
-ms-transform: scaleX($ratio); // IE9 only
|
122
|
+
-o-transform: scaleX($ratio);
|
123
|
+
transform: scaleX($ratio);
|
124
|
+
}
|
125
|
+
@mixin scaleY($ratio) {
|
126
|
+
-webkit-transform: scaleY($ratio);
|
127
|
+
-ms-transform: scaleY($ratio); // IE9 only
|
128
|
+
-o-transform: scaleY($ratio);
|
129
|
+
transform: scaleY($ratio);
|
130
|
+
}
|
131
|
+
@mixin skew($x, $y) {
|
132
|
+
-webkit-transform: skewX($x) skewY($y);
|
133
|
+
-ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
|
134
|
+
-o-transform: skewX($x) skewY($y);
|
135
|
+
transform: skewX($x) skewY($y);
|
136
|
+
}
|
137
|
+
@mixin translate($x, $y) {
|
138
|
+
-webkit-transform: translate($x, $y);
|
139
|
+
-ms-transform: translate($x, $y); // IE9 only
|
140
|
+
-o-transform: translate($x, $y);
|
141
|
+
transform: translate($x, $y);
|
142
|
+
}
|
143
|
+
@mixin translate3d($x, $y, $z) {
|
144
|
+
-webkit-transform: translate3d($x, $y, $z);
|
145
|
+
transform: translate3d($x, $y, $z);
|
146
|
+
}
|
147
|
+
@mixin rotate($degrees) {
|
148
|
+
-webkit-transform: rotate($degrees);
|
149
|
+
-ms-transform: rotate($degrees); // IE9 only
|
150
|
+
-o-transform: rotate($degrees);
|
151
|
+
transform: rotate($degrees);
|
152
|
+
}
|
153
|
+
@mixin rotateX($degrees) {
|
154
|
+
-webkit-transform: rotateX($degrees);
|
155
|
+
-ms-transform: rotateX($degrees); // IE9 only
|
156
|
+
-o-transform: rotateX($degrees);
|
157
|
+
transform: rotateX($degrees);
|
158
|
+
}
|
159
|
+
@mixin rotateY($degrees) {
|
160
|
+
-webkit-transform: rotateY($degrees);
|
161
|
+
-ms-transform: rotateY($degrees); // IE9 only
|
162
|
+
-o-transform: rotateY($degrees);
|
163
|
+
transform: rotateY($degrees);
|
164
|
+
}
|
165
|
+
@mixin perspective($perspective) {
|
166
|
+
-webkit-perspective: $perspective;
|
167
|
+
-moz-perspective: $perspective;
|
168
|
+
perspective: $perspective;
|
169
|
+
}
|
170
|
+
@mixin perspective-origin($perspective) {
|
171
|
+
-webkit-perspective-origin: $perspective;
|
172
|
+
-moz-perspective-origin: $perspective;
|
173
|
+
perspective-origin: $perspective;
|
174
|
+
}
|
175
|
+
@mixin transform-origin($origin) {
|
176
|
+
-webkit-transform-origin: $origin;
|
177
|
+
-moz-transform-origin: $origin;
|
178
|
+
-ms-transform-origin: $origin; // IE9 only
|
179
|
+
transform-origin: $origin;
|
180
|
+
}
|
181
|
+
|
182
|
+
|
183
|
+
// Transitions
|
184
|
+
|
185
|
+
@mixin transition($transition...) {
|
186
|
+
-webkit-transition: $transition;
|
187
|
+
-o-transition: $transition;
|
188
|
+
transition: $transition;
|
189
|
+
}
|
190
|
+
@mixin transition-property($transition-property...) {
|
191
|
+
-webkit-transition-property: $transition-property;
|
192
|
+
transition-property: $transition-property;
|
193
|
+
}
|
194
|
+
@mixin transition-delay($transition-delay) {
|
195
|
+
-webkit-transition-delay: $transition-delay;
|
196
|
+
transition-delay: $transition-delay;
|
197
|
+
}
|
198
|
+
@mixin transition-duration($transition-duration...) {
|
199
|
+
-webkit-transition-duration: $transition-duration;
|
200
|
+
transition-duration: $transition-duration;
|
201
|
+
}
|
202
|
+
@mixin transition-timing-function($timing-function) {
|
203
|
+
-webkit-transition-timing-function: $timing-function;
|
204
|
+
transition-timing-function: $timing-function;
|
205
|
+
}
|
206
|
+
@mixin transition-transform($transition...) {
|
207
|
+
-webkit-transition: -webkit-transform $transition;
|
208
|
+
-moz-transition: -moz-transform $transition;
|
209
|
+
-o-transition: -o-transform $transition;
|
210
|
+
transition: transform $transition;
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
// User select
|
215
|
+
// For selecting text on the page
|
216
|
+
|
217
|
+
@mixin user-select($select) {
|
218
|
+
-webkit-user-select: $select;
|
219
|
+
-moz-user-select: $select;
|
220
|
+
-ms-user-select: $select; // IE10+
|
221
|
+
user-select: $select;
|
222
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Shoestrap
|
2
|
+
class << self
|
3
|
+
# Inspired by Kaminari
|
4
|
+
def load!
|
5
|
+
if rails?
|
6
|
+
register_rails_engine
|
7
|
+
elsif sprockets?
|
8
|
+
register_sprockets
|
9
|
+
end
|
10
|
+
|
11
|
+
configure_sass
|
12
|
+
end
|
13
|
+
|
14
|
+
# Paths
|
15
|
+
def gem_path
|
16
|
+
@gem_path ||= File.expand_path '..', File.dirname(__FILE__)
|
17
|
+
end
|
18
|
+
|
19
|
+
def stylesheets_path
|
20
|
+
File.join assets_path, 'stylesheets'
|
21
|
+
end
|
22
|
+
|
23
|
+
def assets_path
|
24
|
+
@assets_path ||= File.join gem_path, 'assets'
|
25
|
+
end
|
26
|
+
|
27
|
+
# Environment detection helpers
|
28
|
+
def sprockets?
|
29
|
+
defined?(::Sprockets)
|
30
|
+
end
|
31
|
+
|
32
|
+
def rails?
|
33
|
+
defined?(::Rails)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def configure_sass
|
39
|
+
require 'sass'
|
40
|
+
|
41
|
+
::Sass.load_paths << stylesheets_path
|
42
|
+
|
43
|
+
# bootstrap requires minimum precision of 8, see https://github.com/twbs/bootstrap-sass/issues/409
|
44
|
+
::Sass::Script::Number.precision = [8, ::Sass::Script::Number.precision].max
|
45
|
+
end
|
46
|
+
|
47
|
+
def register_rails_engine
|
48
|
+
require 'shoestrap-rails/engine'
|
49
|
+
end
|
50
|
+
|
51
|
+
def register_sprockets
|
52
|
+
Sprockets.append_path(stylesheets_path)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
Shoestrap.load!
|
@@ -0,0 +1,35 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'shoestrap-rails/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'shoestrap-rails'
|
7
|
+
s.version = Shoestrap::VERSION
|
8
|
+
s.authors = ['Jonathan Pike']
|
9
|
+
s.email = 'jonathan.d.s.pike@gmail.com'
|
10
|
+
s.summary = 'Shoestrap: Bootstrap 3, but just a subset.'
|
11
|
+
s.description = 'Shoestrap is a small subset of Bootstrap 3 with only core grid system, typography and layout components.'
|
12
|
+
s.homepage = 'https://github.com/jonathanpike/shoestrap'
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
15
|
+
s.add_runtime_dependency 'sass', '~> 3.3'
|
16
|
+
s.add_runtime_dependency 'autoprefixer-rails', '~> 5.2'
|
17
|
+
|
18
|
+
# Testing dependencies
|
19
|
+
s.add_development_dependency 'minitest', '~> 5.8'
|
20
|
+
s.add_development_dependency 'minitest-reporters', '~> 1.1'
|
21
|
+
# Integration testing
|
22
|
+
s.add_development_dependency 'capybara', '~> 2.5'
|
23
|
+
s.add_development_dependency 'poltergeist', '~> 1.8'
|
24
|
+
# Dummy Rails app dependencies
|
25
|
+
s.add_development_dependency 'actionpack', '~> 4.1'
|
26
|
+
s.add_development_dependency 'activesupport', '~> 4.1'
|
27
|
+
s.add_development_dependency 'json', '~> 1.8'
|
28
|
+
s.add_development_dependency 'sprockets-rails', '~> 2.1'
|
29
|
+
s.add_development_dependency 'jquery-rails', '~> 3.1'
|
30
|
+
s.add_development_dependency 'slim-rails', '~> 3.0'
|
31
|
+
s.add_development_dependency 'uglifier', '~> 2.7'
|
32
|
+
|
33
|
+
s.files = `git ls-files`.split("\n")
|
34
|
+
s.test_files = `git ls-files -- test/*`.split("\n")
|
35
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'sass'
|
4
|
+
|
5
|
+
class CompilationTest < Minitest::Test
|
6
|
+
def test_compilation
|
7
|
+
path = 'assets/stylesheets'
|
8
|
+
%w(_shoestrap).each do |file|
|
9
|
+
FileUtils.rm_rf('.sass-cache', secure: true)
|
10
|
+
engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path])
|
11
|
+
FileUtils.mkdir_p("tmp/#{File.dirname(file)}")
|
12
|
+
File.open("tmp/#{file}.css", 'w') { |f|
|
13
|
+
f.write engine.render
|
14
|
+
}
|
15
|
+
assert true # nothing was raised
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|