@ons/design-system 54.0.0 → 54.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.
@@ -11,7 +11,7 @@
11
11
  }
12
12
 
13
13
  &__results {
14
- border: 1px solid $color-input;
14
+ border: 1px solid $color-input-border;
15
15
  border-radius: $input-radius;
16
16
  display: none;
17
17
  margin: 0.5rem 0 0;
@@ -27,7 +27,7 @@
27
27
 
28
28
  &__results-title {
29
29
  background: $color-grey-15;
30
- border-bottom: 1px solid $color-input;
30
+ border-bottom: 1px solid $color-input-border;
31
31
  padding: 0.25rem 0.5rem;
32
32
  }
33
33
 
@@ -48,7 +48,7 @@
48
48
  padding: $input-padding-horizontal;
49
49
 
50
50
  &:not(:last-child) {
51
- border-bottom: 1px solid $color-input;
51
+ border-bottom: 1px solid $color-input-border;
52
52
  }
53
53
 
54
54
  &:not(&--no-results):not(&--more-results):hover,
@@ -87,7 +87,7 @@
87
87
  padding-left: 0.5rem;
88
88
 
89
89
  &:not(:last-child) {
90
- border-bottom: 1px solid $color-input;
90
+ border-bottom: 1px solid $color-input-border;
91
91
  }
92
92
  }
93
93
 
@@ -118,6 +118,16 @@ describe('script: autosuggest', () => {
118
118
  expect(ariaActiveDescendant).toBe(selectedOptionId);
119
119
  });
120
120
 
121
+ it('sets aria status to a message showing the selected result', async () => {
122
+ await setTestPage('/test', renderComponent('autosuggest', EXAMPLE_AUTOSUGGEST));
123
+
124
+ await page.type('.ons-js-autosuggest-input', 'Eng', { delay: 20 });
125
+ await page.keyboard.press('ArrowDown');
126
+
127
+ const statusMessage = await page.$eval('.ons-js-autosuggest-aria-status', node => node.textContent);
128
+ expect(statusMessage.trim()).toBe('England');
129
+ });
130
+
121
131
  it('does not mark other suggestions as being selected', async () => {
122
132
  await setTestPage('/test', renderComponent('autosuggest', EXAMPLE_AUTOSUGGEST));
123
133
 
@@ -297,7 +307,7 @@ describe('script: autosuggest', () => {
297
307
 
298
308
  const attributes = await getNodeAttributes(page, '.ons-js-autosuggest-input');
299
309
  expect(attributes['aria-activedescendant']).toBeUndefined();
300
- expect(attributes['aria-expanded']).toBeUndefined();
310
+ expect(attributes['aria-expanded']).toBe('false');
301
311
  });
302
312
  });
303
313
 
@@ -502,7 +512,7 @@ describe('script: autosuggest', () => {
502
512
  await page.type('.ons-js-autosuggest-input', 'abc', { delay: 20 });
503
513
 
504
514
  const ariaExpandedValue = await page.$eval('.ons-js-autosuggest-input', node => node.getAttribute('aria-expanded'));
505
- expect(ariaExpandedValue).toBe(null);
515
+ expect(ariaExpandedValue).toBe('false');
506
516
  });
507
517
  });
508
518
  });
@@ -322,7 +322,7 @@ export default class AutosuggestUI {
322
322
  this.listbox.innerHTML = '';
323
323
  this.context.classList.remove(classAutosuggestHasResults);
324
324
  this.input.removeAttribute('aria-activedescendant');
325
- this.input.removeAttribute('aria-expanded');
325
+ this.input.setAttribute('aria-expanded', false);
326
326
 
327
327
  if (!preventAriaStatusUpdate) {
328
328
  this.setAriaStatus();
@@ -343,15 +343,12 @@ export default class AutosuggestUI {
343
343
  this.listbox.innerHTML = '';
344
344
  if (this.results) {
345
345
  this.resultOptions = this.results.map((result, index) => {
346
- let ariaLabel = result[this.lang];
347
- ariaLabel = ariaLabel.split('(<span class="ons-autosuggest-input__group">')[0];
348
346
  let innerHTML = this.emboldenMatch(result[this.lang], this.query);
349
347
 
350
348
  const listElement = document.createElement('li');
351
349
  listElement.className = classAutosuggestOption;
352
350
  listElement.setAttribute('id', `${this.listboxId}__option--${index}`);
353
351
  listElement.setAttribute('role', 'option');
354
- listElement.setAttribute('aria-label', ariaLabel);
355
352
  if (result.category) {
356
353
  innerHTML =
357
354
  innerHTML + `<span class="ons-autosuggest-input__category ons-u-lighter ons-u-fs-s ons-u-db">${result.category}</span>`;
@@ -437,13 +434,13 @@ export default class AutosuggestUI {
437
434
  option.setAttribute('aria-selected', true);
438
435
  this.input.setAttribute('aria-activedescendant', option.getAttribute('id'));
439
436
  const groupedResult = option.querySelector('.ons-autosuggest-input__group');
440
- const ariaLabel = option.getAttribute('aria-label');
437
+ const optionText = option.innerHTML.replace('<strong>', '').replace('</strong>', '');
441
438
  if (groupedResult) {
442
439
  let groupedAriaMsg = this.ariaGroupedResults.replace('{n}', groupedResult.innerHTML);
443
- groupedAriaMsg = groupedAriaMsg.replace('{x}', ariaLabel);
440
+ groupedAriaMsg = groupedAriaMsg.replace('{x}', optionText);
444
441
  this.setAriaStatus(groupedAriaMsg);
445
442
  } else {
446
- this.setAriaStatus(ariaLabel);
443
+ this.setAriaStatus(optionText);
447
444
  }
448
445
  } else {
449
446
  option.classList.remove(classAutosuggestOptionFocused);
@@ -386,13 +386,20 @@ $button-shadow-size: 3px;
386
386
  &--ghost-dark:focus &,
387
387
  &--dropdown:focus & {
388
388
  &__inner {
389
- box-shadow: none;
389
+ border-color: $color-text-link-focus;
390
+ box-shadow: 0 0 0 1px $color-text-link-focus;
390
391
  .ons-svg-icon {
391
392
  fill: $color-black;
392
393
  }
393
394
  }
394
395
  }
395
396
 
397
+ &--dropdown:focus & {
398
+ &__inner {
399
+ box-shadow: inset 0 -4px 0 0 $color-text-link-focus;
400
+ }
401
+ }
402
+
396
403
  &--mobile[aria-expanded='true'],
397
404
  &--text-link[aria-expanded='true'] {
398
405
  .ons-svg-icon {
@@ -10,9 +10,9 @@ $checkbox-padding: 11px;
10
10
  &__input {
11
11
  appearance: none;
12
12
  background: url(#{$static}/img/icons--check.svg) no-repeat center center;
13
- background-color: $color-white;
13
+ background-color: $color-input-bg;
14
14
  background-size: 0;
15
- border: 2px solid $color-input;
15
+ border: 2px solid $color-input-border;
16
16
  border-radius: 0.2rem;
17
17
  box-sizing: border-box;
18
18
  height: $checkbox-input-width;
@@ -73,7 +73,7 @@ $checkbox-padding: 11px;
73
73
  }
74
74
 
75
75
  &:focus {
76
- box-shadow: 0 0 0 3px $color-focus;
76
+ @extend %ons-input-focus;
77
77
  }
78
78
  }
79
79
 
@@ -101,7 +101,7 @@ $checkbox-padding: 11px;
101
101
  }
102
102
 
103
103
  &:focus {
104
- box-shadow: 0 0 0 3px $color-focus;
104
+ @extend %ons-input-focus;
105
105
  }
106
106
 
107
107
  & + .ons-checkbox__label {
@@ -122,7 +122,7 @@ $checkbox-padding: 11px;
122
122
 
123
123
  &::before {
124
124
  background: $color-white;
125
- border: 1px solid $color-input;
125
+ border: 1px solid $color-input-border;
126
126
  border-radius: 3px;
127
127
  bottom: 0;
128
128
  content: '';
@@ -152,7 +152,7 @@ $checkbox-padding: 11px;
152
152
 
153
153
  &__input:checked + &__label::before {
154
154
  background: $color-grey-5;
155
- box-shadow: 0 0 0 1px $color-input;
155
+ box-shadow: 0 0 0 1px $color-input-border;
156
156
  }
157
157
 
158
158
  .ons-panel--error .ons-radio__input:checked ~ &__other > .ons-input--text:required:not(:focus) {
@@ -179,7 +179,7 @@ $checkbox-padding: 11px;
179
179
  top: 0.1rem;
180
180
 
181
181
  &:focus {
182
- box-shadow: 0 0 0 3px $color-focus;
182
+ @extend %ons-input-focus;
183
183
  }
184
184
  }
185
185
 
@@ -14,7 +14,14 @@
14
14
  z-index: 1;
15
15
 
16
16
  &:focus {
17
- box-shadow: inset 0 0 0 1px $color-input;
17
+ // Overide default input focus so it can wrap prefix/suffix too
18
+ box-shadow: none;
19
+ }
20
+
21
+ // Overide default input error style so it can wrap prefix/suffix too
22
+ &.ons-input--error:not(:focus) {
23
+ border-right: $input-border-width solid $color-input-border;
24
+ box-shadow: none;
18
25
  }
19
26
  }
20
27
 
@@ -36,13 +43,15 @@
36
43
 
37
44
  &__type,
38
45
  &__type[title] {
39
- border: 1px solid $color-input;
46
+ border: 1px solid $color-input-border;
40
47
  }
41
48
 
42
49
  &__input:focus + &__type::after {
50
+ // Style input + prefix/suffix on focus
51
+ @extend %ons-input-focus;
52
+
43
53
  border-radius: $input-radius;
44
54
  bottom: 0;
45
- box-shadow: 0 0 0 3px $color-focus;
46
55
  content: '';
47
56
  display: block;
48
57
  left: 0;
@@ -75,3 +84,25 @@
75
84
  }
76
85
  }
77
86
  }
87
+
88
+ // Errors
89
+ .ons-input--error:not(:focus) {
90
+ & + .ons-input-type__type,
91
+ & + .ons-input-type__type[title] {
92
+ border-color: $color-errors;
93
+ }
94
+
95
+ & + .ons-input-type__type::after {
96
+ border-radius: $input-radius;
97
+ bottom: 0;
98
+
99
+ // Style input + prefix/suffix for errors
100
+ box-shadow: 0 0 0 1px $color-errors;
101
+ content: '';
102
+ display: block;
103
+ left: 0;
104
+ position: absolute;
105
+ right: 0;
106
+ top: 0;
107
+ }
108
+ }
@@ -1,10 +1,10 @@
1
1
  %ons-input-focus {
2
- box-shadow: 0 0 0 3px $color-focus, inset 0 0 0 1px $color-input;
2
+ box-shadow: 0 0 0 $input-border-width $color-input-border, 0 0 0 4px $color-focus;
3
3
  outline: none;
4
4
  }
5
5
 
6
6
  .ons-input {
7
- border: $input-border-width solid $color-input;
7
+ border: $input-border-width solid $color-input-border;
8
8
  border-radius: $input-radius;
9
9
  color: inherit;
10
10
  display: block;
@@ -45,8 +45,8 @@
45
45
  }
46
46
 
47
47
  &--error:not(:focus) {
48
- border: 1px solid $color-errors;
49
- box-shadow: inset 0 0 0 1px $color-errors;
48
+ border: $input-border-width solid $color-errors;
49
+ box-shadow: 0 0 0 $input-border-width $color-errors;
50
50
  }
51
51
 
52
52
  &--with-description {
@@ -73,7 +73,7 @@
73
73
 
74
74
  .ons-input--select {
75
75
  appearance: none;
76
- background: $color-white url('#{$static}/img/icons--chevron-down.svg') no-repeat center right 10px;
76
+ background: $color-input-bg url('#{$static}/img/icons--chevron-down.svg') no-repeat center right 10px;
77
77
  background-size: 1rem;
78
78
  line-height: 1.3rem;
79
79
  padding: 0.39rem 2rem 0.39rem $input-padding-horizontal;
@@ -100,10 +100,10 @@
100
100
  color: transparent;
101
101
  }
102
102
  &:valid:not(:placeholder-shown) {
103
- background-color: $color-white;
103
+ background-color: $color-input-bg;
104
104
  }
105
105
  &:focus {
106
- background-color: $color-white;
106
+ background-color: $color-input-bg;
107
107
  }
108
108
  }
109
109
 
@@ -122,7 +122,7 @@
122
122
  .ons-input--ghost {
123
123
  border: 2px solid rgba(255, 255, 255, 0.6);
124
124
  &:focus {
125
- border: 2px solid $color-input;
125
+ border: 2px solid $color-input-border;
126
126
  }
127
127
  }
128
128
 
@@ -156,3 +156,11 @@
156
156
  }
157
157
  }
158
158
  }
159
+
160
+ // Search type inputs - removes the 'X' clear button from webkit browsers
161
+ input[type='search']::-webkit-search-decoration,
162
+ input[type='search']::-webkit-search-cancel-button,
163
+ input[type='search']::-webkit-search-results-button,
164
+ input[type='search']::-webkit-search-results-decoration {
165
+ display: none;
166
+ }
@@ -27,7 +27,7 @@
27
27
  type="{{ type }}"
28
28
  id="{{ params.id }}"
29
29
  class="ons-input ons-input--text ons-input-type__input{% if params.error is defined and params.error %} ons-input--error{% endif %}{% if params.searchButton is defined and params.searchButton %} ons-search__input{% endif %}{% if params.classes is defined and params.classes %} {{ params.classes }}{% endif %}{% if params.width is defined and params.width %} ons-input{% if params.type is defined and (params.type == 'number' or params.type == 'tel') %}-number{% endif %}--w-{{ params.width }}{% endif %}{{ exclusiveClass }}{{ inputPlaceholder }}"
30
- {% if ((params.prefix is defined and params.prefix) and (params.prefix.id is defined and params.prefix.id)) or ((params.suffix is defined and params.suffix) and (params.suffix.id is defined and params.suffix.id)) %}aria-labelledby="{{ params.prefix.id if params.prefix.id }}{{ params.suffix.id if params.suffix.id }}"{% endif %}
30
+ {% if params.prefix is defined and params.prefix and params.prefix.id is defined and params.prefix.id %}aria-labelledby="{{ params.prefix.id }}"{% elif params.suffix is defined and params.suffix and params.suffix.id is defined and params.suffix.id %}aria-labelledby="{{ params.suffix.id }}"{% endif %}
31
31
  {% if params.name is defined and params.name %}name="{{ params.name }}"{% endif %}
32
32
  {% if params.value is defined and params.value %}value="{{ params.value }}"{% endif %}
33
33
  {% if params.accept is defined and params.accept %}accept="{{ params.accept }}"{% endif %}
@@ -71,25 +71,23 @@
71
71
  {% endif %}
72
72
 
73
73
  {% if params.prefix is defined and params.prefix or params.suffix is defined and params.suffix %}
74
- {% if (params.prefix is defined and params.prefix and params.prefix.id is defined and params.prefix.id) or (params.suffix is defined and params.suffix and params.suffix.id is defined and params.suffix.id) %}
75
- {% if (params.prefix.title is defined and params.prefix.title) or (params.suffix.title is defined and params.suffix.title) %}
76
- {% if params.prefix is defined and params.prefix %}
77
- {% set prefixClass = " ons-input-type--prefix" %}
78
- {% endif %}
74
+ {% if (params.prefix is defined and params.prefix and params.prefix.id is defined and params.prefix.id and params.prefix.title is defined and params.prefix.title) or (params.suffix is defined and params.suffix and params.suffix.id is defined and params.suffix.id and params.suffix.title is defined and params.suffix.title) %}
75
+ {% if params.prefix is defined and params.prefix %}
76
+ {% set prefixClass = " ons-input-type--prefix" %}
77
+ {% endif %}
79
78
 
80
- <span class="ons-input-type{{ prefixClass }}">
81
- <span class="ons-input-type__inner">
82
- {{ input | safe }}
79
+ <span class="ons-input-type{{ prefixClass }}">
80
+ <span class="ons-input-type__inner">
81
+ {{ input | safe }}
83
82
 
84
- {% set abbr = params.prefix or params.suffix %}
85
- <abbr
86
- id="{{ abbr.id }}"
87
- class="ons-input-type__type ons-js-input-abbr"
88
- title="{{ abbr.title }}"
89
- >{{ abbr.text or abbr.title }}</abbr>
90
- </span>
83
+ {% set abbr = params.prefix or params.suffix %}
84
+ <abbr
85
+ id="{{ abbr.id }}"
86
+ class="ons-input-type__type ons-js-input-abbr"
87
+ title="{{ abbr.title }}"
88
+ >{{ abbr.text or abbr.title }}</abbr>
91
89
  </span>
92
- {% endif %}
90
+ </span>
93
91
  {% endif %}
94
92
  {% elif params.searchButton is defined and params.searchButton %}
95
93
  <span class="ons-grid--flex ons-search">
@@ -9,7 +9,7 @@
9
9
  box-shadow: inset 0 0 0 3px $color-white;
10
10
 
11
11
  &:checked {
12
- background: $color-input;
12
+ background: $color-input-border;
13
13
  }
14
14
  }
15
15
 
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  &:focus {
30
- box-shadow: 0 0 0 3px $color-focus, inset 0 0 0 3px $color-white;
30
+ box-shadow: inset 0 0 0 3px $color-input-bg, 0 0 0 $input-border-width $color-input-border, 0 0 0 4px $color-focus;
31
31
  }
32
32
  }
33
33
  }
@@ -1,7 +1,7 @@
1
1
  .ons-relationships {
2
2
  &__playback {
3
- border-bottom: 1px solid $color-input;
4
- border-top: 1px solid $color-input;
3
+ border-bottom: 1px solid $color-input-border;
4
+ border-top: 1px solid $color-input-border;
5
5
  margin: 2rem 0 0;
6
6
  padding: 1rem 0;
7
7
 
@@ -107,8 +107,8 @@
107
107
  overflow-x: scroll;
108
108
  width: 100%;
109
109
  &:focus {
110
- outline: 3px solid $color-focus;
111
- outline-offset: 3px;
110
+ box-shadow: 0 0 0 3px $color-page-light, 0 0 0 5px $color-text-link-focus, 0 0 0 8px $color-focus;
111
+ outline: none;
112
112
  }
113
113
  .ons-table__header,
114
114
  .ons-table__cell {
@@ -119,6 +119,7 @@
119
119
  .ons-table__right-shadow,
120
120
  .ons-table__left-shadow {
121
121
  height: 100%;
122
+ padding: 2px;
122
123
  position: absolute;
123
124
  top: 0;
124
125
  width: 5px;
@@ -1,17 +1,33 @@
1
1
  .ons-tabs {
2
2
  margin-bottom: 1rem;
3
- }
4
3
 
5
- // Tabs - list
6
- .ons-tabs__list {
7
- border-bottom: 0;
8
- margin: 0 0 1rem;
9
- overflow: visible;
10
- padding: 0;
4
+ &__title {
5
+ @extend .ons-u-fs-r--b;
6
+ }
11
7
 
12
- &--row {
13
- border-bottom: 1px solid $color-borders;
14
- margin: 0;
8
+ // Anchor links list
9
+ &__list {
10
+ border-bottom: 0;
11
+ margin: 0 0 1rem;
12
+ overflow: visible;
13
+ padding: 0;
14
+
15
+ // Tabs
16
+ &--row {
17
+ margin: 0;
18
+ position: relative;
19
+
20
+ &::after {
21
+ background: $color-borders;
22
+ bottom: 0;
23
+ box-shadow: 0 1px 0 0 $color-page-light;
24
+ content: '';
25
+ height: 1px;
26
+ left: 0;
27
+ position: absolute;
28
+ width: 100%;
29
+ }
30
+ }
15
31
  }
16
32
  }
17
33
 
@@ -32,7 +48,7 @@
32
48
  border-radius: 3px 3px 0 0;
33
49
  color: $color-text;
34
50
  display: inline-block;
35
- height: 2.5rem;
51
+ height: 2.55rem;
36
52
  line-height: 2.3rem;
37
53
  margin: 0 0.1rem 0 0;
38
54
  overflow: visible;
@@ -47,47 +63,52 @@
47
63
  text-decoration: underline solid $color-text 2px;
48
64
  }
49
65
 
66
+ &:focus {
67
+ background-color: $color-focus;
68
+ border-bottom: 1px solid $color-borders;
69
+ box-shadow: inset 0 0 0 9px $color-button-secondary,
70
+ inset 17px 0 0 0 $color-button-secondary,
71
+ inset -17px 0 0 0 $color-button-secondary,
72
+ inset 0 -13px 0 0 $color-text-link-focus;
73
+ color: $color-text-link-focus;
74
+ outline: none;
75
+ text-decoration: underline solid $color-text 2px;
76
+ }
77
+
78
+ // Tab when selected
50
79
  &[aria-selected='true'] {
51
- background-color: $color-white;
80
+ background-color: $color-page-light;
81
+ border-bottom: none;
52
82
  border-color: $color-borders;
53
- // Tab when selected
54
83
  border-radius: 3px 3px 0 0;
55
- font-weight: 700;
56
84
  text-decoration: none;
85
+ z-index: 1;
57
86
 
58
- &::after {
59
- background: $color-white;
60
- bottom: -2px;
61
- box-shadow: none;
62
- content: '';
63
- height: 0.09rem;
64
- left: 0;
65
- // hides the lower border of the active tab.
66
- position: absolute;
67
- right: 0;
68
- z-index: 3;
87
+ &:focus {
88
+ background-color: $color-focus;
89
+ border-bottom: 1px solid $color-page-light;
90
+ box-shadow: inset 0 0 0 9px $color-page-light,
91
+ inset 17px 0 0 0 $color-page-light,
92
+ inset -17px 0 0 0 $color-page-light,
93
+ inset 0 -13px 0 0 $color-text-link-focus;
94
+ text-decoration: none;
69
95
  }
70
96
  }
71
-
72
- &:focus {
73
- background-color: $color-focus;
74
- color: $color-text-link-focus;
75
- outline: none;
76
- }
77
97
  }
78
98
 
79
99
  // Tabs - Panels
80
100
  .ons-tabs__panel {
81
- margin-bottom: 1rem;
101
+ padding-bottom: 1rem;
82
102
  padding-top: 1rem;
83
103
  position: relative;
84
- z-index: 10;
85
104
 
86
105
  &--hidden {
87
106
  display: none;
88
107
  }
89
108
 
90
109
  &:focus {
91
- outline: 4px solid $color-focus;
110
+ box-shadow: 0 0 0 3px $color-page-light, 0 0 0 5px $color-text-link-focus, 0 0 0 8px $color-focus;
111
+ outline: none;
112
+ z-index: 1;
92
113
  }
93
114
  }
@@ -30,8 +30,6 @@ export default class Tabs {
30
30
  this.jsTabItemAsRowClass = 'ons-tab__list-item--row';
31
31
  this.jsTabAsListClass = 'ons-tab--row';
32
32
 
33
- this.tabsTitle.classList.add('ons-u-vh');
34
-
35
33
  if (matchMediaUtil.hasMatchMedia()) {
36
34
  this.setupViewportChecks();
37
35
  } else {
@@ -61,6 +59,8 @@ export default class Tabs {
61
59
  this.tabList[0].setAttribute('role', 'tablist');
62
60
  this.tabList[0].classList.add(this.jsTabListAsRowClass);
63
61
 
62
+ this.tabsTitle.classList.add('ons-u-vh');
63
+
64
64
  this.tabPanels.forEach(panel => {
65
65
  panel.setAttribute('tabindex', '0');
66
66
  });
@@ -90,6 +90,8 @@ export default class Tabs {
90
90
  this.tabList[0].removeAttribute('role');
91
91
  this.tabList[0].classList.remove(this.jsTabListAsRowClass);
92
92
 
93
+ this.tabsTitle.classList.remove('ons-u-vh');
94
+
93
95
  this.tabPanels.forEach(panel => {
94
96
  panel.removeAttribute('tabindex', '0');
95
97
  });
@@ -1,6 +1,6 @@
1
1
  .ons-input--upload {
2
2
  background: $color-white;
3
- border: 1px solid $color-input;
3
+ border: 1px solid $color-input-border;
4
4
  border-radius: $input-radius;
5
5
  font-size: 1rem;
6
6
  padding: 0;
@@ -9,7 +9,7 @@
9
9
  background: $color-button-secondary;
10
10
  border: 0;
11
11
  border-bottom-right-radius: 0;
12
- border-right: 1px solid $color-input;
12
+ border-right: 1px solid $color-input-border;
13
13
  border-top-right-radius: 0;
14
14
  color: $color-text;
15
15
  font-size: 1rem;