bootstrap-email 0.2.4 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7816c7cdc437e8aefdf437ab0e118f012e7836291ee3b388d8e7537f74f101cf
4
- data.tar.gz: 337f33d82e3ef0a00c53d795f4770e634ad269a13698604e55b06b599063a9ef
3
+ metadata.gz: 62c6c5c793d4efc84cce78d500c28962ed044dcb2ee4cfa340ac366711d78275
4
+ data.tar.gz: 591fe6126e0b9029ba96fa8d6c00ce99dae098a08a590d70f8aed75893dde83d
5
5
  SHA512:
6
- metadata.gz: 943fa5bbf9fd7b074026d2e96525b6f70adc1d9cfd765354c4c3aada839552accd8dcb4d7c2d0508119a7131b6a9d96a6dca15c9d326c3a601e9d9cd03e7e287
7
- data.tar.gz: 453a5d2e60c8664eda67805b87b9101c8208882288b2e96e5522248e7847efe88468130b9b342fbe14eb6ed2ea8af40565a21d5c0fa748cd1b38c2f380f79af8
6
+ metadata.gz: '048c1bb0ed2d42b612e4fa052e6dc8f0872cb474aaa06664b6b3030f07f226d572213de43b459575ffca84d5ec75936c0341fbaa59a6fa47e9b490a47ff6c750'
7
+ data.tar.gz: 14ab4f2fe71b5966e39dedc63283851b9d9650f7a2bbebe3cf2ac30e69e2ca59465101c4536935f1e77e08e285df70d1c94e9338bb1404dbce4545e40a3113c3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.3.2
@@ -16,3 +16,4 @@
16
16
  @import 'sass/color';
17
17
  @import 'sass/preview';
18
18
  @import 'sass/spacing';
19
+ @import 'sass/border';
@@ -36,6 +36,39 @@ a {
36
36
  text-decoration: none;
37
37
  }
38
38
 
39
+ /*
40
+ Gmail inserts the following 2 rules above this file in <head> and this overrides them
41
+
42
+ body,
43
+ td,
44
+ input,
45
+ textarea,
46
+ select {
47
+ margin: 0;
48
+ font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif
49
+ }
50
+
51
+ input,
52
+ textarea,
53
+ select {
54
+ font-size: 100%
55
+ }
56
+ */
57
+ body,
58
+ td,
59
+ input,
60
+ textarea,
61
+ select {
62
+ margin: unset;
63
+ font-family: unset;
64
+ }
65
+
66
+ input,
67
+ textarea,
68
+ select {
69
+ font-size: unset;
70
+ }
71
+
39
72
  @media screen and (max-width: 600px) {
40
73
  // Grid
41
74
  table.row {
@@ -0,0 +1,73 @@
1
+ //
2
+ // Border
3
+ //
4
+
5
+ .border { border: $border-width solid $border-color !important; }
6
+ .border-top { border-top: $border-width solid $border-color !important; }
7
+ .border-right { border-right: $border-width solid $border-color !important; }
8
+ .border-bottom { border-bottom: $border-width solid $border-color !important; }
9
+ .border-left { border-left: $border-width solid $border-color !important; }
10
+
11
+ .border-0 { border: 0 !important; }
12
+ .border-top-0 { border-top: 0 !important; }
13
+ .border-right-0 { border-right: 0 !important; }
14
+ .border-bottom-0 { border-bottom: 0 !important; }
15
+ .border-left-0 { border-left: 0 !important; }
16
+
17
+ @each $color, $value in $theme-colors {
18
+ .border-#{$color} {
19
+ border-color: $value !important;
20
+ }
21
+ }
22
+
23
+ .border-white {
24
+ border-color: $white !important;
25
+ }
26
+
27
+ //
28
+ // Border-radius
29
+ //
30
+
31
+ .rounded-sm {
32
+ border-radius: $border-radius-sm !important;
33
+ }
34
+
35
+ .rounded {
36
+ border-radius: $border-radius !important;
37
+ }
38
+
39
+ .rounded-top {
40
+ border-top-left-radius: $border-radius !important;
41
+ border-top-right-radius: $border-radius !important;
42
+ }
43
+
44
+ .rounded-right {
45
+ border-top-right-radius: $border-radius !important;
46
+ border-bottom-right-radius: $border-radius !important;
47
+ }
48
+
49
+ .rounded-bottom {
50
+ border-bottom-right-radius: $border-radius !important;
51
+ border-bottom-left-radius: $border-radius !important;
52
+ }
53
+
54
+ .rounded-left {
55
+ border-top-left-radius: $border-radius !important;
56
+ border-bottom-left-radius: $border-radius !important;
57
+ }
58
+
59
+ .rounded-lg {
60
+ border-radius: $border-radius-lg !important;
61
+ }
62
+
63
+ .rounded-circle {
64
+ border-radius: 50% !important;
65
+ }
66
+
67
+ .rounded-pill {
68
+ border-radius: $rounded-pill !important;
69
+ }
70
+
71
+ .rounded-0 {
72
+ border-radius: 0 !important;
73
+ }
@@ -1,23 +1,23 @@
1
1
  .btn {
2
- border-radius: 4px;
2
+ border-radius: $btn-border-radius;
3
3
  border-collapse: separate !important;
4
4
  }
5
5
 
6
6
  .btn td {
7
- border-radius: 4px;
7
+ border-radius: $btn-border-radius;
8
8
  text-align: center;
9
9
  }
10
10
 
11
11
  .btn td a {
12
- font-size: 16px;
13
- font-family: Helvetica, Arial, sans-serif;
12
+ font-size: $btn-font-size;
13
+ font-family: $btn-font-family;
14
14
  text-decoration: none;
15
- border-radius: 4px;
16
- padding: 8px 12px;
17
- line-height: 1.25 * $font-size-base;
18
- border: 1px solid #e9703e;
15
+ border-radius: $btn-border-radius;
16
+ padding: $btn-padding-y $btn-padding-x;
17
+ line-height: $btn-line-height;
18
+ border: $btn-border-width solid transparent;
19
19
  display: inline-block;
20
- font-weight: normal;
20
+ font-weight: $btn-font-weight;
21
21
  white-space: nowrap;
22
22
  }
23
23
 
@@ -45,15 +45,15 @@
45
45
  }
46
46
 
47
47
  .btn-sm td a {
48
- font-size: .875 * $font-size-base;
49
- padding: .25 * $font-size-base .5 * $font-size-base;
50
- line-height: 1.5 * .875 * $font-size-base;
51
- border-radius: .2 * $font-size-base;
48
+ font-size: $btn-font-size-sm;
49
+ padding: $btn-padding-y-sm $btn-padding-x-sm;
50
+ line-height: $btn-line-height-sm;
51
+ border-radius: $btn-border-radius-sm;
52
52
  }
53
53
 
54
54
  .btn-lg td a {
55
- font-size: 1.25 * $font-size-base;
56
- padding: .5 * $font-size-base 1 * $font-size-base;
57
- line-height: 1.5 * 1.25 * $font-size-base;
58
- border-radius: .3 * $font-size-base;
55
+ font-size: $btn-font-size-lg;
56
+ padding: $btn-padding-y-lg $btn-padding-x-lg;
57
+ line-height: $btn-line-height-lg;
58
+ border-radius: $btn-border-radius-lg;
59
59
  }
@@ -5,6 +5,16 @@
5
5
  }
6
6
  }
7
7
 
8
+ .bg-white,
9
+ .bg-white > tbody > tr > td {
10
+ background-color: $white !important;
11
+ }
12
+
13
+ .bg-transparent,
14
+ .bg-transparent > tbody > tr > td {
15
+ background-color: transparent !important;
16
+ }
17
+
8
18
  @each $color, $value in $theme-colors {
9
19
  .text-#{$color},
10
20
  .text-#{$color} > tbody > tr > td {
@@ -1,7 +1,7 @@
1
1
  /* Based on https://templates.mailchimp.com/development/css/reset-styles/ by Mailchimp */
2
2
  body, .body {
3
3
  margin: 0;
4
- Margin: 0;
4
+ Margin: 0; // For compatibility with Outlook https://www.emailonacid.com/blog/article/email-development/outlook-com-does-support-margins/
5
5
  padding: 0;
6
6
  border: 0;
7
7
  outline: 0;
@@ -10,13 +10,15 @@ body, .body {
10
10
  height: 100%;
11
11
  -webkit-text-size-adjust: 100%;
12
12
  -ms-text-size-adjust: 100%;
13
- font-family: $font-family-sans-serif;
13
+ font-family: $font-family-base;
14
14
  line-height: $line-height-base * $font-size-base;
15
- font-weight: normal;
15
+ font-weight: $font-weight-base;
16
16
  font-size: $font-size-base;
17
17
  -moz-box-sizing: border-box;
18
18
  -webkit-box-sizing: border-box;
19
19
  box-sizing: border-box;
20
+ background-color: $body-bg;
21
+ color: $body-color;
20
22
  }
21
23
 
22
24
  img {
@@ -33,7 +35,7 @@ a img {
33
35
 
34
36
  // don't apply to spacers
35
37
  table:not([class^=s-]) {
36
- font-family: $font-family-sans-serif;
38
+ font-family: $font-family-base;
37
39
  mso-table-lspace: 0pt;
38
40
  mso-table-rspace: 0pt;
39
41
  }
@@ -60,4 +62,3 @@ p {
60
62
  font-size: $font-size-base;
61
63
  margin: 0;
62
64
  }
63
-
@@ -5,27 +5,24 @@
5
5
  .table {
6
6
  width: 100%;
7
7
  max-width: 100%;
8
- // margin-bottom: $spacer;
9
- background-color: $white; // Reset for nesting within parents with `background-color`.
8
+ background-color: $table-background-color; // Reset for nesting within parents with `background-color`.
10
9
 
11
10
  & > thead > tr > th {
12
11
  text-align: left;
12
+ vertical-align: bottom;
13
+ border-bottom: (2 * $table-border-width) solid $table-border-color;
13
14
  }
14
15
 
15
16
  & > thead > tr > th,
16
- & > tbody > tr > td {
17
+ & > tbody > tr > td,
18
+ & > tfoot > tr > td {
17
19
  padding: 0.75 * $font-size-base;
18
20
  vertical-align: top;
19
21
  border-top: $table-border-width solid $table-border-color;
20
22
  }
21
-
22
- & > thead > th {
23
- vertical-align: bottom;
24
- border-bottom: (2 * $table-border-width) solid $table-border-color;
25
- }
26
23
  }
27
24
 
28
- .table-unstyled{
25
+ .table-unstyled {
29
26
  width: 100%;
30
27
  max-width: 100%;
31
28
  background-color: transparent;
@@ -43,7 +40,8 @@
43
40
 
44
41
  .table-sm {
45
42
  & > thead > tr > th,
46
- & > tbody > tr > td {
43
+ & > tbody > tr > td,
44
+ & > tfoot > tr > td {
47
45
  padding: 0.3 * $font-size-base;;
48
46
  }
49
47
  }
@@ -57,7 +55,8 @@
57
55
  border: $table-border-width solid $table-border-color;
58
56
 
59
57
  & > thead > tr > th,
60
- & > tbody > tr > td {
58
+ & > tbody > tr > td,
59
+ & > tfoot > tr > td {
61
60
  border: $table-border-width solid $table-border-color;
62
61
  }
63
62
 
@@ -76,7 +75,7 @@
76
75
 
77
76
  .table-striped {
78
77
  & > tbody > tr:nth-of-type(odd) {
79
- background-color: #f2f2f2;
78
+ background-color: $table-accent-bg;
80
79
  }
81
80
  }
82
81
 
@@ -98,30 +97,31 @@
98
97
 
99
98
 
100
99
 
101
- // Inverse styles
100
+ // Dark styles
102
101
  //
103
102
  // Same table markup, but inverted color scheme: dark background and light text.
104
103
 
105
- .thead-inverse {
106
- & > thead > tr > th {
104
+ .thead-dark {
105
+ th {
107
106
  color: $white;
108
107
  background-color: $gray-900;
109
108
  }
110
109
  }
111
110
 
112
- .thead-default {
113
- & > thead > tr > th {
111
+ .thead-light {
112
+ th {
114
113
  color: $gray-700;
115
114
  background-color: $gray-200;
116
115
  }
117
116
  }
118
117
 
119
- .table-inverse {
118
+ .table-dark {
120
119
  color: $white;
121
120
  background-color: $gray-900;
122
121
 
123
122
  & > thead > tr > th,
124
- & > tbody > tr > td {
123
+ & > tbody > tr > td,
124
+ & > tfoot > tr > td {
125
125
  border-color: #32383e;
126
126
  }
127
127
 
@@ -1,10 +1,10 @@
1
1
  h1, h2, h3, h4, h5, h6,
2
2
  .h1, .h2, .h3, .h4, .h5, .h6 {
3
- margin-top: 0;
4
- margin-bottom: 0;
5
- // margin-bottom: $font-size-base / 2;
6
- font-weight: 500;
7
- color: inherit;
3
+ margin-top: $headings-margin-top;
4
+ margin-bottom: $headings-margin-bottom;
5
+ font-family: $headings-font-family;
6
+ font-weight: $headings-font-weight;
7
+ color: $headings-color;
8
8
  text-align: left;
9
9
  vertical-align: baseline;
10
10
  }
@@ -16,6 +16,14 @@ h1, h2, h3, h4, h5, h6,
16
16
  }
17
17
  }
18
18
 
19
+ .font-weight-bold {
20
+ font-weight: bold !important;
21
+ }
22
+
23
+ .font-weight-normal {
24
+ font-weight: normal !important;
25
+ }
26
+
19
27
  .text-left {
20
28
  text-align: left !important;
21
29
  }
@@ -28,7 +36,8 @@ h1, h2, h3, h4, h5, h6,
28
36
  text-align: center !important;
29
37
  }
30
38
 
31
- .p {
39
+ p {
40
+ margin-bottom: $paragraph-margin-bottom;
32
41
  width: 100%;
33
42
  & > tbody > tr > td {
34
43
  margin: 0;
@@ -1,7 +1,21 @@
1
- $font-size-base: 16px !default;
2
- $line-height-base: 1.5;
3
- $headings-line-height: 1.2;
4
- $headings-ratios: (1: 2.25, 2: 2, 3: 1.75, 4: 1.5, 5: 1.25, 6: 1);
1
+ $font-size-base: 16px !default;
2
+ $font-weight-base: normal !default;
3
+ $font-family-sans-serif: Helvetica, Arial, sans-serif !default;
4
+ $font-family-base: $font-family-sans-serif !default;
5
+ $border-radius: $font-size-base * 0.25 !default;
6
+ $border-radius-lg: $font-size-base * 0.3 !default;
7
+ $border-radius-sm: $font-size-base * 0.2 !default;
8
+ $border-width: 1px !default;
9
+ $line-height-base: 1.5 !default;
10
+ $headings-line-height: 1.2 !default;
11
+ $headings-ratios: (1: 2.25, 2: 2, 3: 1.75, 4: 1.5, 5: 1.25, 6: 1) !default;
12
+ $headings-margin-top: 0 !default;
13
+ $headings-margin-bottom: 0 !default;
14
+ $headings-font-family: null !default;
15
+ $headings-font-weight: 500 !default;
16
+ $headings-color: null !default;
17
+ $paragraph-margin-bottom: 0 !default;
18
+ $rounded-pill: 50 * $font-size-base !default;
5
19
 
6
20
  //
7
21
  // Color system
@@ -88,8 +102,6 @@ $spacers: (
88
102
  5: ($spacer * 3)
89
103
  ) !default;
90
104
 
91
- $font-family-sans-serif: Helvetica, Arial, sans-serif !default;
92
-
93
105
  $widths: (
94
106
  25: 25%,
95
107
  50: 50%,
@@ -98,10 +110,41 @@ $widths: (
98
110
  auto: auto
99
111
  ) !default;
100
112
 
101
- $table-border-color: $gray-200;
102
- $table-border-width: 1px;
113
+ $border-color: $gray-300 !default;
114
+
115
+ $table-accent-bg: #f2f2f2 !default;
116
+ $table-background-color: null !default;
117
+ $table-border-color: $border-color !default;
118
+ $table-border-width: $border-width !default;
119
+
120
+ $body-color: $black !default;
121
+ $body-bg: $white !default;
122
+
123
+ $btn-padding-y: 8px !default;
124
+ $btn-padding-x: 12px !default;
125
+ $btn-font-family: $font-family-base !default;
126
+ $btn-font-size: $font-size-base !default;
127
+ $btn-line-height: 1.25 * $btn-font-size !default;
128
+
129
+ $btn-padding-y-sm: 0.25 * $btn-font-size !default;
130
+ $btn-padding-x-sm: 0.5 * $btn-font-size !default;
131
+ $btn-font-size-sm: 0.875 * $btn-font-size !default;
132
+ $btn-line-height-sm: $btn-line-height * 0.875 !default;
133
+
134
+ $btn-padding-y-lg: 0.5 * $btn-font-size !default;
135
+ $btn-padding-x-lg: $btn-font-size !default;
136
+ $btn-font-size-lg: 1.25 * $btn-font-size !default;
137
+ $btn-line-height-lg: $btn-line-height * 1.25 !default;
138
+
139
+ $btn-border-width: $border-width !default;
140
+
141
+ $btn-font-weight: $font-weight-base !default;
142
+
143
+ // Allows for customizing button radius independently from global border radius
144
+ $btn-border-radius: $border-radius !default;
145
+ $btn-border-radius-lg: $border-radius-lg !default;
146
+ $btn-border-radius-sm: $border-radius-sm !default;
103
147
 
104
148
  // Utility functions
105
149
  @function heading-size($n) { @return map-get($headings-ratios, $n) * $font-size-base; }
106
150
  @function heading-line-height($n) { @return heading-size($n) * $headings-line-height; }
107
-
@@ -8,13 +8,13 @@ require 'rails'
8
8
 
9
9
  module BootstrapEmail
10
10
  class Compiler
11
- def initialize mail
11
+ def initialize(mail)
12
12
  @mail = mail
13
13
  @source = mail.html_part || mail
14
14
  update_doc(@source.body.raw_source)
15
15
  end
16
16
 
17
- def update_doc source
17
+ def update_doc(source)
18
18
  @doc = Nokogiri::HTML(source)
19
19
  end
20
20
 
@@ -60,23 +60,24 @@ module BootstrapEmail
60
60
  private
61
61
 
62
62
  def bootstrap_email_head
63
+ engine = defined?(SassC::Engine).nil? ? Sass::Engine : SassC::Engine
63
64
  html_string = <<-HEREDOC
64
65
  <style type="text/css">
65
- #{Sass::Engine.new(File.open(File.expand_path('../core/head.scss', __dir__)).read, {syntax: :scss, style: :compressed, cache: false, read_cache: false}).render}
66
+ #{engine.new(File.open(File.expand_path('../core/head.scss', __dir__)).read, syntax: :scss, style: :compressed, cache: false, read_cache: false).render}
66
67
  </style>
67
68
  HEREDOC
68
69
  html_string
69
70
  end
70
71
 
71
- def template file, locals_hash = {}
72
+ def template(file, locals_hash = {})
72
73
  namespace = OpenStruct.new(locals_hash)
73
74
  template_html = File.open(File.expand_path("../core/templates/#{file}.html.erb", __dir__)).read
74
75
  ERB.new(template_html).result(namespace.instance_eval { binding })
75
76
  end
76
77
 
77
- def each_node css_lookup, &blk
78
+ def each_node(css_lookup, &blk)
78
79
  # sort by youngest child and traverse backwards up the tree
79
- @doc.css(css_lookup).sort_by{ |n| n.ancestors.size }.reverse!.each(&blk)
80
+ @doc.css(css_lookup).sort_by { |n| n.ancestors.size }.reverse!.each(&blk)
80
81
  end
81
82
 
82
83
  def button
@@ -109,7 +110,7 @@ module BootstrapEmail
109
110
  end
110
111
  end
111
112
 
112
- def align_helper node, klass, template
113
+ def align_helper(node, klass, template)
113
114
  if node.name != 'table' # if it is already on a table, set the proprieties on the current table
114
115
  node['class'] = node['class'].sub(klass, '')
115
116
  node.replace(template("align-#{template}", contents: node.to_html))
@@ -153,12 +154,12 @@ module BootstrapEmail
153
154
 
154
155
  def padding
155
156
  each_node('*[class*=p-], *[class*=pt-], *[class*=pr-], *[class*=pb-], *[class*=pl-], *[class*=px-], *[class*=py-]') do |node|
156
- if node.name != 'table' # if it is already on a table, set the padding on the table, else wrap the content in a table
157
- padding_regex = /(p[trblxy]?-\d)/
158
- classes = node['class'].scan(padding_regex).join(' ')
159
- node['class'] = node['class'].gsub(padding_regex, '')
160
- node.replace(template('table', classes: classes, contents: node.to_html))
161
- end
157
+ next unless node.name != 'table' # if it is already on a table, set the padding on the table, else wrap the content in a table
158
+
159
+ padding_regex = /(p[trblxy]?-\d)/
160
+ classes = node['class'].scan(padding_regex).join(' ')
161
+ node['class'] = node['class'].gsub(padding_regex, '')
162
+ node.replace(template('table', classes: classes, contents: node.to_html))
162
163
  end
163
164
  end
164
165
 
@@ -212,13 +213,13 @@ module BootstrapEmail
212
213
 
213
214
  def preview_text
214
215
  preview_node = @doc.at_css('preview')
215
- if preview_node.present?
216
- # apply spacing after the text max of 100 characters so it doesn't show body text
217
- preview_node.content += '&nbsp;' * (100 - preview_node.content.length.to_i)
218
- node = template('div', classes: 'preview', contents: preview_node.content)
219
- preview_node.remove
220
- return node
221
- end
216
+ return if preview_node.blank?
217
+
218
+ # apply spacing after the text max of 100 characters so it doesn't show body text
219
+ preview_node.content += '&nbsp;' * [(100 - preview_node.content.length.to_i), 0].max
220
+ node = template('div', classes: 'preview', contents: preview_node.content)
221
+ preview_node.remove
222
+ node
222
223
  end
223
224
  end
224
225
  end
@@ -1,11 +1,11 @@
1
1
  class ActionMailer::Base
2
2
  # sit in the middle and compile the html
3
- def bootstrap_mail *args
3
+ def bootstrap_mail(*args)
4
4
  bootstrap = BootstrapEmail::Compiler.new(mail(*args) { |format| format.html { render layout: 'layouts/bootstrap-mailer.html.erb' } })
5
5
  bootstrap.perform_full_compile
6
6
  end
7
7
 
8
- def make_bootstrap_mail *args, &block
8
+ def make_bootstrap_mail(*args, &block)
9
9
  bootstrap = BootstrapEmail::Compiler.new(mail(*args, &block))
10
10
  bootstrap.perform_full_compile
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Yamartino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-04 00:00:00.000000000 Z
11
+ date: 2020-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: nokogiri
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -65,9 +59,6 @@ dependencies:
65
59
  - - ">="
66
60
  - !ruby/object:Gem::Version
67
61
  version: '3'
68
- - - "<"
69
- - !ruby/object:Gem::Version
70
- version: '6'
71
62
  type: :runtime
72
63
  prerelease: false
73
64
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,11 +66,8 @@ dependencies:
75
66
  - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: '3'
78
- - - "<"
79
- - !ruby/object:Gem::Version
80
- version: '6'
81
69
  description:
82
- email: stuartyamartino@gmail.com
70
+ email: stu@stuyam.com
83
71
  executables: []
84
72
  extensions: []
85
73
  extra_rdoc_files: []
@@ -89,6 +77,7 @@ files:
89
77
  - core/head.scss
90
78
  - core/sass/_alert.scss
91
79
  - core/sass/_badge.scss
80
+ - core/sass/_border.scss
92
81
  - core/sass/_button.scss
93
82
  - core/sass/_card.scss
94
83
  - core/sass/_color.scss
@@ -141,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
130
  - !ruby/object:Gem::Version
142
131
  version: '0'
143
132
  requirements: []
144
- rubyforge_project:
145
- rubygems_version: 2.7.6
133
+ rubygems_version: 3.0.3
146
134
  signing_key:
147
135
  specification_version: 4
148
136
  summary: Bootstrap 4 stylesheet, compiler, and inliner for responsive and consistent