trestle 0.8.6 → 0.8.7
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 +5 -5
- data/README.md +10 -9
- data/app/assets/javascripts/trestle/components/_dialog.js +29 -8
- data/app/assets/javascripts/trestle/components/_form.js +28 -7
- data/app/assets/javascripts/trestle/components/_sidebar.js +10 -8
- data/app/assets/javascripts/trestle/components/_tabs.js +2 -1
- data/app/assets/javascripts/trestle/components/_tooltips.js +16 -0
- data/app/assets/stylesheets/trestle/components/_modal.scss +4 -0
- data/app/assets/stylesheets/trestle/components/_navigation.scss +31 -11
- data/app/assets/stylesheets/trestle/components/_sidebar.scss +2 -2
- data/app/assets/stylesheets/trestle/components/_tags.scss +9 -0
- data/app/assets/stylesheets/trestle/components/_wells.scss +9 -1
- data/app/assets/stylesheets/trestle/core/_defaults.scss +4 -4
- data/app/assets/stylesheets/trestle/core/_layout.scss +8 -0
- data/app/assets/stylesheets/trestle/core/_typography.scss +39 -0
- data/app/controllers/concerns/trestle/controller/breadcrumbs.rb +21 -0
- data/app/controllers/concerns/trestle/controller/callbacks.rb +21 -0
- data/app/controllers/concerns/trestle/controller/dialog.rb +16 -0
- data/app/controllers/concerns/trestle/controller/helpers.rb +18 -0
- data/app/controllers/concerns/trestle/controller/layout.rb +16 -0
- data/app/controllers/concerns/trestle/controller/location.rb +15 -0
- data/app/controllers/trestle/application_controller.rb +6 -34
- data/app/helpers/trestle/debug_helper.rb +11 -0
- data/app/helpers/trestle/format_helper.rb +7 -3
- data/app/helpers/trestle/headings_helper.rb +27 -0
- data/app/helpers/trestle/panel_helper.rb +24 -0
- data/app/helpers/trestle/table_helper.rb +41 -2
- data/app/helpers/trestle/url_helper.rb +3 -1
- data/app/views/layouts/trestle/admin.html.erb +1 -1
- data/app/views/trestle/application/_flash.html.erb +1 -1
- data/app/views/trestle/shared/_sidebar.html.erb +2 -2
- data/app/views/trestle/table/_table.html.erb +2 -6
- data/lib/generators/trestle/resource/templates/admin.rb.erb +2 -2
- data/lib/trestle.rb +6 -4
- data/lib/trestle/adapters/active_record_adapter.rb +0 -4
- data/lib/trestle/adapters/adapter.rb +15 -10
- data/lib/trestle/adapters/sequel_adapter.rb +0 -4
- data/lib/trestle/admin.rb +18 -1
- data/lib/trestle/admin/builder.rb +22 -10
- data/lib/trestle/form/automatic.rb +5 -2
- data/lib/trestle/form/builder.rb +5 -1
- data/lib/trestle/form/field.rb +1 -1
- data/lib/trestle/form/fields/form_group.rb +3 -1
- data/lib/trestle/form/fields/select.rb +5 -1
- data/lib/trestle/form/fields/tag_select.rb +1 -1
- data/lib/trestle/form/renderer.rb +1 -1
- data/lib/trestle/navigation.rb +11 -5
- data/lib/trestle/navigation/item.rb +10 -0
- data/lib/trestle/resource.rb +27 -61
- data/lib/trestle/resource/builder.rb +15 -14
- data/lib/trestle/resource/collection.rb +48 -0
- data/lib/trestle/resource/controller.rb +36 -23
- data/lib/trestle/scope.rb +13 -3
- data/lib/trestle/table.rb +10 -4
- data/lib/trestle/table/column.rb +13 -2
- data/lib/trestle/table/row.rb +10 -0
- data/lib/trestle/version.rb +1 -1
- data/trestle.gemspec +1 -0
- data/vendor/assets/stylesheets/trestle/magnific-popup.scss +13 -1
- metadata +27 -4
- data/app/helpers/trestle/dialog_helper.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a9c0345d2065a71ba7b11d5044f6cf0db55e08d8a9e0d5d3a83c715bf029f76f
|
4
|
+
data.tar.gz: 8ce2f2a003d051204d1ad0017be70a9fe220ed0e4bf47bc2f3e6234ad751c316
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8638b5a1c9cd255fde7251ebb44d86f602523d5c6ef383044a033e2239973c6239ff4f7d018d9273fc232805b41bb7a4ad15f83110fd5e95d0cddcdf4c2fbca4
|
7
|
+
data.tar.gz: b4f2bcdb3835d26b81186b790952c602069e4bae7a59cf0791370c455a6488502943f426fc91505595761a6fc1f6b57718bda02a0fff638fdd154c2b7c8b0d7d
|
data/README.md
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
|
5
5
|
# Trestle
|
6
6
|
|
7
|
-
[](https://rubygems.org/gems/trestle)
|
8
|
+
[](https://travis-ci.org/TrestleAdmin/trestle)
|
9
|
+
[](https://coveralls.io/github/TrestleAdmin/trestle)
|
10
|
+
[](https://codeclimate.com/github/TrestleAdmin/trestle)
|
11
11
|
|
12
12
|
> A modern, responsive admin framework for Ruby on Rails
|
13
13
|
|
@@ -87,12 +87,13 @@ end
|
|
87
87
|
|
88
88
|
The following plugins are currently available:
|
89
89
|
|
90
|
-
| Name | Description |
|
90
|
+
| Name | Description | Links |
|
91
91
|
| --- | --- | --- |
|
92
|
-
| *trestle-auth* | User authentication plugin | https://github.com/TrestleAdmin/trestle-auth |
|
93
|
-
| *trestle-search* | Search plugin | https://github.com/TrestleAdmin/trestle-search |
|
94
|
-
| *trestle-tinymce* | TinyMCE (WYSIWYG editor) integration | https://github.com/TrestleAdmin/trestle-tinymce |
|
95
|
-
| *trestle-simplemde* | SimpleMDE (Markdown editor) integration | https://github.com/TrestleAdmin/trestle-simplemde |
|
92
|
+
| *trestle-auth* | User authentication plugin | [GitHub](https://github.com/TrestleAdmin/trestle-auth) \| [RubyGems](https://rubygems.org/gems/trestle-auth) |
|
93
|
+
| *trestle-search* | Search plugin | [GitHub](https://github.com/TrestleAdmin/trestle-search) \| [RubyGems](https://rubygems.org/gems/trestle-search) |
|
94
|
+
| *trestle-tinymce* | [TinyMCE](https://www.tinymce.com/) (WYSIWYG editor) integration | [GitHub](https://github.com/TrestleAdmin/trestle-tinymce) \| [RubyGems](https://rubygems.org/gems/trestle-tinymce) |
|
95
|
+
| *trestle-simplemde* | [SimpleMDE](https://simplemde.com/) (Markdown editor) integration | [GitHub](https://github.com/TrestleAdmin/trestle-simplemde) \| [RubyGems](https://rubygems.org/gems/trestle-simplemde) |
|
96
|
+
| *trestle-sidekiq* | [Sidekiq](http://sidekiq.org/) integration | [GitHub](https://github.com/TrestleAdmin/trestle-sidekiq) \| [RubyGems](https://rubygems.org/gems/trestle-sidekiq) |
|
96
97
|
|
97
98
|
|
98
99
|
## License
|
@@ -1,5 +1,11 @@
|
|
1
|
-
Trestle.Dialog = function() {
|
1
|
+
Trestle.Dialog = function(options) {
|
2
|
+
options = options || {};
|
3
|
+
|
2
4
|
this.el = Trestle.Dialog.getElement();
|
5
|
+
|
6
|
+
if (options.modalClass) {
|
7
|
+
this.el.find('.modal-dialog').addClass(options.modalClass);
|
8
|
+
}
|
3
9
|
};
|
4
10
|
|
5
11
|
Trestle.Dialog.TEMPLATE =
|
@@ -31,6 +37,15 @@ Trestle.Dialog.getElement = function() {
|
|
31
37
|
return el;
|
32
38
|
};
|
33
39
|
|
40
|
+
Trestle.Dialog.showError = function(title, errorText) {
|
41
|
+
var dialog = new Trestle.Dialog({ modalClass: 'modal-lg' });
|
42
|
+
|
43
|
+
dialog.showError(title, $('<pre>').addClass('exception').text(errorText));
|
44
|
+
dialog.show();
|
45
|
+
|
46
|
+
return dialog;
|
47
|
+
};
|
48
|
+
|
34
49
|
Trestle.Dialog.prototype.load = function(url) {
|
35
50
|
var dialog = this;
|
36
51
|
|
@@ -50,7 +65,12 @@ Trestle.Dialog.prototype.load = function(url) {
|
|
50
65
|
dialog.setContent(content);
|
51
66
|
},
|
52
67
|
error: function(xhr, status, error) {
|
53
|
-
dialog.
|
68
|
+
var errorMessage = Trestle.i18n['trestle.dialog.error'] || 'The request could not be completed.';
|
69
|
+
|
70
|
+
var title = error || errorMessage;
|
71
|
+
var content = $('<p>').text(errorMessage);
|
72
|
+
|
73
|
+
dialog.showError(title, content);
|
54
74
|
}
|
55
75
|
});
|
56
76
|
};
|
@@ -68,20 +88,18 @@ Trestle.Dialog.prototype.setContent = function(content) {
|
|
68
88
|
$(Trestle).trigger('init', this.el);
|
69
89
|
};
|
70
90
|
|
71
|
-
Trestle.Dialog.prototype.showError = function(
|
91
|
+
Trestle.Dialog.prototype.showError = function(title, content) {
|
72
92
|
this.el.addClass('error');
|
73
93
|
|
74
94
|
var container = this.el.find('.modal-content').empty();
|
75
95
|
|
76
|
-
var errorMessage = Trestle.i18n['trestle.dialog.error'] || 'The request could not be completed.';
|
77
|
-
|
78
96
|
$('<div class="modal-header">')
|
79
97
|
.append('<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>')
|
80
|
-
.append('<h4 class="modal-title"></h4>').find('h4').text(
|
98
|
+
.append('<h4 class="modal-title"></h4>').find('h4').text(title).end()
|
81
99
|
.appendTo(container);
|
82
100
|
|
83
101
|
$('<div class="modal-body">')
|
84
|
-
.append(
|
102
|
+
.append(content)
|
85
103
|
.appendTo(container);
|
86
104
|
|
87
105
|
$('<div class="modal-footer">')
|
@@ -102,6 +120,9 @@ $(document).on('click', '[data-behavior="dialog"]', function(e) {
|
|
102
120
|
|
103
121
|
var url = $(this).data('url') || $(this).attr('href');
|
104
122
|
|
105
|
-
var dialog = new Trestle.Dialog(
|
123
|
+
var dialog = new Trestle.Dialog({
|
124
|
+
modalClass: $(this).data('dialog-class')
|
125
|
+
});
|
126
|
+
|
106
127
|
dialog.load(url);
|
107
128
|
});
|
@@ -10,15 +10,36 @@ Trestle.init(function(e, root) {
|
|
10
10
|
|
11
11
|
form
|
12
12
|
.on('ajax:complete', function(e, xhr, status) {
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
var contentType = xhr.getResponseHeader("Content-Type").split(";")[0];
|
14
|
+
|
15
|
+
if (contentType == "text/html") {
|
16
|
+
if (/<html/i.test(xhr.responseText)) {
|
17
|
+
// Response is a full HTML page, likely an error page. Render within an iframe.
|
18
|
+
|
19
|
+
var context = $(this).closest('[data-context]');
|
20
|
+
var iframe = $("<iframe>").addClass('error-iframe').get(0);
|
21
|
+
context.html(iframe);
|
16
22
|
|
17
|
-
|
18
|
-
|
23
|
+
iframe.contentWindow.document.documentElement.innerHTML = xhr.responseText;
|
24
|
+
} else {
|
25
|
+
// Find the parent context and replace content
|
26
|
+
var context = $(this).closest('[data-context]');
|
27
|
+
context.html(xhr.responseText);
|
19
28
|
|
20
|
-
|
21
|
-
|
29
|
+
// Initialize replaced elements within the context
|
30
|
+
$(Trestle).trigger('init', context);
|
31
|
+
|
32
|
+
// Focus the correct tab
|
33
|
+
Trestle.focusActiveTab();
|
34
|
+
}
|
35
|
+
} else {
|
36
|
+
// Assume an error response
|
37
|
+
var title = xhr.status + " (" + xhr.statusText + ")";
|
38
|
+
Trestle.Dialog.showError(title, xhr.responseText);
|
39
|
+
|
40
|
+
// Reset submit button
|
41
|
+
form.find(':submit').prop('disabled', false).removeClass('loading');
|
42
|
+
}
|
22
43
|
})
|
23
44
|
.on('ajax:success', function(e, data, status, xhr) {
|
24
45
|
var context = $(this).closest('[data-context]');
|
@@ -1,4 +1,6 @@
|
|
1
1
|
Trestle.ready(function() {
|
2
|
+
var body = $('body');
|
3
|
+
var wrapper = $('.app-wrapper');
|
2
4
|
var sidebar = $('.app-sidebar');
|
3
5
|
|
4
6
|
// Toggle mobile navigation using menu button
|
@@ -6,18 +8,18 @@ Trestle.ready(function() {
|
|
6
8
|
sidebar.find('.navbar-toggle').on('click', function(e) {
|
7
9
|
e.preventDefault();
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
wrapper.addClass('animate');
|
12
|
+
body.toggleClass('mobile-nav-expanded');
|
11
13
|
});
|
12
14
|
|
13
|
-
|
15
|
+
wrapper.on('transitionend webkitTransitionEnd', function() {
|
14
16
|
$(this).removeClass('animate');
|
15
17
|
});
|
16
18
|
|
17
19
|
|
18
20
|
// Interacting outside of the sidebar closes the navigation
|
19
21
|
|
20
|
-
|
22
|
+
wrapper.on('click touchstart', function(e) {
|
21
23
|
var navExpanded = $('body').hasClass('mobile-nav-expanded');
|
22
24
|
|
23
25
|
var clickInHeader = $(e.target).closest('.app-header').length;
|
@@ -38,14 +40,14 @@ Trestle.ready(function() {
|
|
38
40
|
sidebar.find('.toggle-sidebar').on('click', function(e) {
|
39
41
|
e.preventDefault();
|
40
42
|
|
41
|
-
if (
|
42
|
-
|
43
|
+
if (body.hasClass('sidebar-expanded') || body.hasClass('sidebar-collapsed')) {
|
44
|
+
body.removeClass('sidebar-expanded').removeClass('sidebar-collapsed');
|
43
45
|
Trestle.cookie.delete("trestle:sidebar");
|
44
46
|
} else if ($(document).width() >= 1200) {
|
45
|
-
|
47
|
+
body.addClass('sidebar-collapsed');
|
46
48
|
Trestle.cookie.set("trestle:sidebar", "collapsed");
|
47
49
|
} else if ($(document).width() >= 768) {
|
48
|
-
|
50
|
+
body.addClass('sidebar-expanded');
|
49
51
|
Trestle.cookie.set("trestle:sidebar", "expanded");
|
50
52
|
}
|
51
53
|
});
|
@@ -1,8 +1,9 @@
|
|
1
1
|
Trestle.init(function(e, root) {
|
2
2
|
$(root).find("a[data-toggle='tab']").on('shown.bs.tab', function(e) {
|
3
3
|
var hash = $(this).attr("href");
|
4
|
+
var withinModal = $(this).closest('.modal').length > 0;
|
4
5
|
|
5
|
-
if (hash.substr(0, 1) == "#") {
|
6
|
+
if (hash.substr(0, 1) == "#" && !withinModal) {
|
6
7
|
history.replaceState({ turbolinks: {} }, "", "#!" + hash.substr(1));
|
7
8
|
}
|
8
9
|
});
|
@@ -1,3 +1,19 @@
|
|
1
1
|
Trestle.init(function(e, root) {
|
2
2
|
$(root).find('[data-toggle="tooltip"]').tooltip();
|
3
|
+
$(root).find('[data-toggle="popover"]').popover();
|
3
4
|
});
|
5
|
+
|
6
|
+
if (!('ontouchstart' in window)) {
|
7
|
+
Trestle.ready(function() {
|
8
|
+
$(document).tooltip({
|
9
|
+
selector: '.app-nav a',
|
10
|
+
trigger: 'hover',
|
11
|
+
placement: 'right',
|
12
|
+
container: 'body',
|
13
|
+
template: '<div class="tooltip nav-tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
|
14
|
+
title: function() {
|
15
|
+
return $(this).find('.nav-label').text();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
});
|
19
|
+
};
|
@@ -93,6 +93,10 @@
|
|
93
93
|
}
|
94
94
|
}
|
95
95
|
|
96
|
+
.nav-tooltip {
|
97
|
+
display: none !important;
|
98
|
+
}
|
99
|
+
|
96
100
|
@mixin collapsed-nav-header {
|
97
101
|
height: 0;
|
98
102
|
padding: 10px 15px 15px;
|
@@ -124,6 +128,10 @@
|
|
124
128
|
}
|
125
129
|
|
126
130
|
@include tablet {
|
131
|
+
.nav-tooltip {
|
132
|
+
display: block !important;
|
133
|
+
}
|
134
|
+
|
127
135
|
.app-nav {
|
128
136
|
.nav-label, .nav-badge {
|
129
137
|
display: none;
|
@@ -138,8 +146,10 @@
|
|
138
146
|
display: block;
|
139
147
|
}
|
140
148
|
}
|
149
|
+
}
|
141
150
|
|
142
|
-
|
151
|
+
.sidebar-expanded {
|
152
|
+
.app-nav {
|
143
153
|
.nav-header a {
|
144
154
|
height: auto;
|
145
155
|
padding: 5px 20px;
|
@@ -159,23 +169,33 @@
|
|
159
169
|
.nav-label { display: inline; }
|
160
170
|
.nav-badge { display: block; }
|
161
171
|
}
|
172
|
+
|
173
|
+
.nav-tooltip {
|
174
|
+
display: none !important;
|
175
|
+
}
|
162
176
|
}
|
163
177
|
}
|
164
178
|
|
165
179
|
@include desktop {
|
166
|
-
.collapsed
|
167
|
-
.
|
168
|
-
|
169
|
-
|
180
|
+
.sidebar-collapsed {
|
181
|
+
.app-nav {
|
182
|
+
.nav-label, .nav-badge {
|
183
|
+
display: none;
|
184
|
+
}
|
170
185
|
|
171
|
-
|
172
|
-
|
173
|
-
|
186
|
+
.nav-header a {
|
187
|
+
@include collapsed-nav-header;
|
188
|
+
}
|
174
189
|
|
175
|
-
|
176
|
-
|
177
|
-
|
190
|
+
.collapsed .nav-header a {
|
191
|
+
&::after {
|
192
|
+
display: block;
|
193
|
+
}
|
178
194
|
}
|
179
195
|
}
|
196
|
+
|
197
|
+
.nav-tooltip {
|
198
|
+
display: block !important;
|
199
|
+
}
|
180
200
|
}
|
181
201
|
}
|
@@ -171,7 +171,7 @@
|
|
171
171
|
content: $fa-var-angle-double-right;
|
172
172
|
}
|
173
173
|
|
174
|
-
|
174
|
+
.sidebar-expanded & {
|
175
175
|
width: $sidebar-width;
|
176
176
|
|
177
177
|
.app-sidebar-header {
|
@@ -204,7 +204,7 @@
|
|
204
204
|
|
205
205
|
@include desktop {
|
206
206
|
.app-sidebar {
|
207
|
-
|
207
|
+
.sidebar-collapsed & {
|
208
208
|
width: $sidebar-width-collapsed;
|
209
209
|
|
210
210
|
.app-sidebar-header {
|
@@ -14,6 +14,15 @@
|
|
14
14
|
}
|
15
15
|
}
|
16
16
|
|
17
|
+
a.tag {
|
18
|
+
&:hover, &:focus {
|
19
|
+
text-decoration: none;
|
20
|
+
color: white;
|
21
|
+
background: $brand-primary;
|
22
|
+
border-left-color: darken($brand-primary, 10%);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
17
26
|
.tag-select {
|
18
27
|
&.select2-selection--multiple {
|
19
28
|
.select2-selection__choice {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
.well {
|
2
|
-
padding:
|
2
|
+
padding: 15px;
|
3
3
|
|
4
4
|
box-shadow: none;
|
5
5
|
border-radius: 0;
|
@@ -13,6 +13,14 @@
|
|
13
13
|
}
|
14
14
|
}
|
15
15
|
|
16
|
+
.well-lg {
|
17
|
+
padding: 24px;
|
18
|
+
}
|
19
|
+
|
20
|
+
.well-sm {
|
21
|
+
padding: 9px;
|
22
|
+
}
|
23
|
+
|
16
24
|
.main-content-sidebar .well {
|
17
25
|
margin: 0 -20px;
|
18
26
|
background: darken($well-bg, 3%);
|
@@ -31,8 +31,8 @@ $sidebar-toggle-color: rgba(white, 0.5) !default;
|
|
31
31
|
|
32
32
|
$content-header-background: rgba(white, 0.6) !default;
|
33
33
|
|
34
|
-
$content-sidebar-width:
|
35
|
-
$content-sidebar-background: rgba(black, 0.025);
|
34
|
+
$content-sidebar-width: 285px !default;
|
35
|
+
$content-sidebar-background: rgba(black, 0.025) !default;
|
36
36
|
|
37
37
|
$sidebar-transition-duration: 250ms !default;
|
38
38
|
|
@@ -65,9 +65,9 @@ $table-bg-accent: rgba(black, 0.02) !default;
|
|
65
65
|
$table-bg-hover: rgba(black, 0.04) !default;
|
66
66
|
$table-border-color: rgba(black, 0.13) !default;
|
67
67
|
|
68
|
-
$well-border: transparent;
|
68
|
+
$well-border: transparent !default;
|
69
69
|
|
70
|
-
$panel-border-radius: 0;
|
70
|
+
$panel-border-radius: 0 !default;
|
71
71
|
|
72
72
|
$popover-shadow: 0 3px 6px rgba(black, .175) !default;
|
73
73
|
$dropdown-shadow: $popover-shadow !default;
|
@@ -41,6 +41,9 @@ img {
|
|
41
41
|
|
42
42
|
.app-main {
|
43
43
|
flex: 1 0 auto;
|
44
|
+
|
45
|
+
display: flex;
|
46
|
+
flex-direction: column;
|
44
47
|
}
|
45
48
|
|
46
49
|
.app-footer {
|
@@ -57,6 +60,11 @@ img {
|
|
57
60
|
}
|
58
61
|
}
|
59
62
|
|
63
|
+
.error-iframe {
|
64
|
+
border: 0;
|
65
|
+
flex: 1;
|
66
|
+
}
|
67
|
+
|
60
68
|
@include mobile {
|
61
69
|
body {
|
62
70
|
height: auto;
|
@@ -19,6 +19,45 @@ a {
|
|
19
19
|
border-radius: 10em !important;
|
20
20
|
}
|
21
21
|
|
22
|
+
.main-content-sidebar {
|
23
|
+
font-size: 13px;
|
24
|
+
|
25
|
+
h1, h2, h3, h4, h5, h6 {
|
26
|
+
color: #666;
|
27
|
+
border-bottom: 1px solid #ddd;
|
28
|
+
|
29
|
+
padding-top: 5px;
|
30
|
+
padding-bottom: 0.5em;
|
31
|
+
|
32
|
+
margin-top: 20px;
|
33
|
+
margin-bottom: 15px;
|
34
|
+
}
|
35
|
+
|
36
|
+
h1 {
|
37
|
+
font-size: 28px;
|
38
|
+
}
|
39
|
+
|
40
|
+
h2 {
|
41
|
+
font-size: 24px;
|
42
|
+
}
|
43
|
+
|
44
|
+
h3 {
|
45
|
+
font-size: 21px;
|
46
|
+
}
|
47
|
+
|
48
|
+
h4 {
|
49
|
+
font-size: 17px;
|
50
|
+
}
|
51
|
+
|
52
|
+
h5 {
|
53
|
+
font-size: 14px;
|
54
|
+
}
|
55
|
+
|
56
|
+
h6 {
|
57
|
+
font-size: 12px;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
22
61
|
@include mobile {
|
23
62
|
h1 {
|
24
63
|
font-size: $font-size-h1 - 6px;
|