@odx/ui 1.0.0-rc.1 → 1.0.0-rc.11

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.
Files changed (92) hide show
  1. package/323d385340fb9fee6450.svg +6 -0
  2. package/LICENSE +1 -0
  3. package/README.md +32 -0
  4. package/core-icons.css +39 -9
  5. package/core-icons.woff2 +0 -0
  6. package/core-theme.css +1 -1
  7. package/package.json +7 -8
  8. package/scss/{modules → abstract}/_breakpoints.scss +11 -11
  9. package/scss/{modules/_vertical-rythm.scss → abstract/_dimensions.scss} +29 -26
  10. package/scss/abstract/_index.scss +5 -0
  11. package/scss/abstract/_motion.scss +12 -0
  12. package/scss/abstract/_typography.scss +25 -0
  13. package/scss/abstract/_utils.scss +124 -0
  14. package/scss/cdk/active-indicator.scss +25 -0
  15. package/scss/cdk/connected-overlay.scss +36 -0
  16. package/scss/components/accordion-item.component.scss +56 -0
  17. package/scss/components/accordion.component.scss +3 -0
  18. package/scss/components/{action-group/action-group.component.scss → action-group.component.scss} +11 -7
  19. package/scss/components/{area-header/area-header.component.scss → area-header.component.scss} +33 -39
  20. package/scss/components/{avatar/avatar.component.scss → avatar.component.scss} +18 -13
  21. package/scss/components/{badge/badge.component.scss → badge.component.scss} +15 -24
  22. package/scss/components/bar.component.scss +86 -0
  23. package/scss/components/breadcrumbs.component.scss +26 -0
  24. package/scss/components/button-group.component.scss +99 -0
  25. package/scss/components/button.component.scss +129 -0
  26. package/scss/components/checkbox.component.scss +117 -0
  27. package/scss/components/chip.component.scss +52 -0
  28. package/scss/components/circular-progress.component.scss +75 -0
  29. package/scss/components/content-box.component.scss +54 -0
  30. package/scss/components/dropdown.component.scss +28 -0
  31. package/scss/components/form-field.component.scss +208 -0
  32. package/scss/components/header.component.scss +40 -0
  33. package/scss/components/icon.component.scss +35 -0
  34. package/scss/components/inline-message.component.scss +33 -0
  35. package/scss/components/launch-tile.component.scss +118 -0
  36. package/scss/components/{link/link.component.scss → link.component.scss} +6 -4
  37. package/scss/components/list-item.component.scss +107 -0
  38. package/scss/components/list.component.scss +3 -0
  39. package/scss/components/loading-spinner.component.scss +54 -0
  40. package/scss/components/{logo/logo.component.scss → logo.component.scss} +5 -4
  41. package/scss/components/main-menu-button.component.scss +7 -0
  42. package/scss/components/{main-menu/components/main-menu-item.component.scss → main-menu-item.component.scss} +14 -12
  43. package/scss/components/{main-menu/main-menu.component.scss → main-menu.component.scss} +37 -29
  44. package/scss/components/menu-item.component.scss +8 -0
  45. package/scss/components/menu.component.scss +48 -0
  46. package/scss/components/modal.component.scss +144 -0
  47. package/scss/components/progress.component.scss +41 -0
  48. package/scss/components/radio-button.component.scss +120 -0
  49. package/scss/components/radio-group.component.scss +14 -0
  50. package/scss/components/rail-navigation-item.component.scss +60 -0
  51. package/scss/components/rail-navigation.component.scss +32 -0
  52. package/scss/components/select.component.scss +103 -0
  53. package/scss/components/slider.component.scss +131 -0
  54. package/scss/components/spinbox.component.scss +124 -0
  55. package/scss/components/switch.component.scss +163 -0
  56. package/scss/components/tab-bar-item.component.scss +53 -0
  57. package/scss/components/tab-bar.component.scss +124 -0
  58. package/scss/components/toast-item.component.scss +79 -0
  59. package/scss/components/toast.component.scss +33 -0
  60. package/scss/components/toggle-button-group.component.scss +63 -0
  61. package/scss/components/toggle-button.component.scss +69 -0
  62. package/scss/components/tooltip.component.scss +34 -0
  63. package/scss/core.scss +66 -30
  64. package/scss/layout/_base.scss +35 -0
  65. package/scss/layout/_content.scss +25 -0
  66. package/scss/layout/_description-list.scss +30 -0
  67. package/scss/layout/_helpers.scss +85 -0
  68. package/scss/{modules → layout}/_layout.scss +96 -46
  69. package/scss/layout/_text-list.scss +18 -0
  70. package/scss/layout/_typography.scss +114 -0
  71. package/scss/{base/_reset.scss → reset.scss} +30 -5
  72. package/scss/variables/_color-palettes.scss +59 -55
  73. package/scss/variables/_colors.scss +15 -15
  74. package/scss/variables/_controls.scss +47 -0
  75. package/scss/variables/_index.scss +6 -0
  76. package/scss/variables/_typography.scss +18 -0
  77. package/scss/variables/_vertical-rythm.scss +3 -0
  78. package/scss/variables/_visuals.scss +15 -8
  79. package/scss/_helpers.scss +0 -15
  80. package/scss/base/_mixins.scss +0 -3
  81. package/scss/base/_utils.scss +0 -19
  82. package/scss/base/mixins/_container.scss +0 -31
  83. package/scss/base/mixins/_control.scss +0 -50
  84. package/scss/base/mixins/_transition.scss +0 -10
  85. package/scss/components/button/button.component.scss +0 -94
  86. package/scss/components/checkbox/checkbox.component.scss +0 -130
  87. package/scss/components/content-box/content-box.component.scss +0 -50
  88. package/scss/components/header/header.component.scss +0 -39
  89. package/scss/components/icon/icon.component.scss +0 -38
  90. package/scss/components/main-menu/components/main-menu-button.component.scss +0 -7
  91. package/scss/components/radio-group/_radio-group.component.scss +0 -145
  92. package/scss/modules/_typography.scss +0 -161
@@ -0,0 +1,75 @@
1
+ @use '../abstract/motion';
2
+ @use '../abstract/dimensions';
3
+
4
+ @keyframes odx-circular-progress-indicator-animation {
5
+ 0% {
6
+ stroke-dashoffset: 100;
7
+ }
8
+
9
+ 25% {
10
+ stroke-dashoffset: 250;
11
+ transform: rotate(180deg);
12
+ }
13
+
14
+ 100% {
15
+ stroke-dashoffset: 100;
16
+ transform: rotate(270deg);
17
+ }
18
+ }
19
+
20
+ @keyframes odx-circular-progress-inner-animation {
21
+ 0% {
22
+ transform: rotate(0deg);
23
+ }
24
+
25
+ 100% {
26
+ transform: rotate(360deg);
27
+ }
28
+ }
29
+
30
+ .odx-circular-progress {
31
+ $root: &;
32
+
33
+ aspect-ratio: 1;
34
+ display: inline-block;
35
+ height: 100%;
36
+
37
+ &__track,
38
+ &__indicator {
39
+ fill: transparent;
40
+ }
41
+
42
+ &__track {
43
+ stroke: var(--gray-100);
44
+ }
45
+
46
+ &__indicator {
47
+ @include motion.transition(stroke-dashoffset);
48
+
49
+ stroke: var(--odx-c-highlight);
50
+ transform: rotate(-90deg);
51
+ transform-origin: 50% 50%;
52
+ }
53
+
54
+ &--indeterminate {
55
+ #{$root}__inner {
56
+ animation: 1.75s linear infinite odx-circular-progress-inner-animation;
57
+ }
58
+
59
+ #{$root}__indicator {
60
+ animation: 1.75s ease infinite odx-circular-progress-indicator-animation both;
61
+ }
62
+ }
63
+
64
+ &--small {
65
+ @include dimensions.height(2, 1.5);
66
+ }
67
+
68
+ &--medium {
69
+ @include dimensions.height(3, 2.5);
70
+ }
71
+
72
+ &--large {
73
+ @include dimensions.height(4, 4);
74
+ }
75
+ }
@@ -0,0 +1,54 @@
1
+ @use '../abstract/breakpoints';
2
+ @use '../abstract/dimensions';
3
+
4
+ .odx-content-box {
5
+ background-color: var(--odx-c-background-content);
6
+ display: block;
7
+
8
+ &__header,
9
+ &__footer {
10
+ align-items: center;
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+
14
+ > * {
15
+ flex: 1 1 auto;
16
+ }
17
+ }
18
+
19
+ &__header {
20
+ @include dimensions.padding(0.5, ('top', 'right', 'left'));
21
+
22
+ @include breakpoints.up(phone) {
23
+ @include dimensions.padding(1, ('top', 'right', 'left'));
24
+ }
25
+ }
26
+
27
+ &__footer {
28
+ @include dimensions.padding(0.5, ('right', 'bottom', 'left'));
29
+
30
+ @include breakpoints.up(phone) {
31
+ @include dimensions.padding(1, ('right', 'bottom', 'left'));
32
+ }
33
+ }
34
+
35
+ &__content {
36
+ @include dimensions.padding(0.5);
37
+
38
+ @include breakpoints.up(phone) {
39
+ @include dimensions.padding(1);
40
+ }
41
+ }
42
+
43
+ > .odx-area-header {
44
+ @include dimensions.padding(0.5, ('top', 'bottom'));
45
+
46
+ @include breakpoints.up(phone) {
47
+ @include dimensions.padding(1, ('top', 'bottom'));
48
+ }
49
+ }
50
+
51
+ & > .odx-area-header ~ &__content {
52
+ padding-top: 0;
53
+ }
54
+ }
@@ -0,0 +1,28 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+
4
+ $dropdown-open-selector: '.odx-dropdown-host[aria-expanded="true"]';
5
+
6
+ .odx-dropdown {
7
+ background-color: var(--odx-c-background-content);
8
+ border-radius: var(--odx-v-border-radius);
9
+ box-shadow: var(--odx-v-box-shadow-layer-2);
10
+ display: block;
11
+ min-height: inherit;
12
+
13
+ &__inner {
14
+ @include dimensions.padding-x(0.5);
15
+
16
+ border-bottom: dimensions.get-size(0.5) solid transparent;
17
+ border-top: dimensions.get-size(0.5) solid transparent;
18
+ max-height: inherit;
19
+ min-height: inherit;
20
+ overflow: auto;
21
+ }
22
+ }
23
+
24
+ .odx-dropdown-overlay {
25
+ .odx-cdk-connected-overlay-arrow {
26
+ background-color: var(--odx-c-background-content);
27
+ }
28
+ }
@@ -0,0 +1,208 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/utils';
6
+
7
+ $form-field-label-height: math.div(20, 24);
8
+ $form-field-hint-height: math.div(16, 24);
9
+ $form-field-inner-padding: math.div(8, 24);
10
+
11
+ :root {
12
+ --odx-form-field-hint-color: var(--gray-500);
13
+ }
14
+
15
+ .odx-form,
16
+ .odx-form-group {
17
+ --odx-grid-gutter: #{dimensions.get-size(0.5)};
18
+
19
+ row-gap: 0;
20
+ }
21
+
22
+ .odx-form-field {
23
+ $root: &;
24
+ $control-selector: '.odx-form-field-control';
25
+
26
+ @include dimensions.padding($form-field-label-height, top);
27
+
28
+ color: var(--odx-input-control-color);
29
+ display: flex;
30
+ flex-direction: column;
31
+ vertical-align: top;
32
+
33
+ &__label,
34
+ &__info {
35
+ @include dimensions.padding-x($form-field-inner-padding);
36
+
37
+ display: block;
38
+ flex: 1 1 auto;
39
+ }
40
+
41
+ &__prefix,
42
+ &__suffix {
43
+ @include dimensions.height(1.5);
44
+ @include motion.transition(color);
45
+ @include utils.vertical-center-content(true);
46
+
47
+ flex: 0 0 auto;
48
+
49
+ #{$root}.is-disabled & {
50
+ color: var(--odx-input-control-color-disabled);
51
+ }
52
+ }
53
+
54
+ &__prefix:not(:empty) {
55
+ @include dimensions.padding($form-field-inner-padding, left);
56
+ }
57
+
58
+ &__suffix:not(:empty) {
59
+ @include dimensions.padding($form-field-inner-padding, right);
60
+ }
61
+
62
+ &-label {
63
+ @include typography.prevent-text-overflow();
64
+
65
+ display: block;
66
+ max-width: 100%;
67
+ }
68
+
69
+ &__label {
70
+ @include dimensions.line-height($form-field-label-height);
71
+ @include dimensions.margin(-$form-field-label-height, 'top');
72
+ @include typography.font-size(-1);
73
+
74
+ display: flex;
75
+ user-select: none;
76
+
77
+ #{$root}--required:not(.is-readonly, .is-disabled) &::after {
78
+ @include typography.font-size(0);
79
+
80
+ color: var(--odx-c-error-text);
81
+ content: '*';
82
+ margin-left: 2px;
83
+ vertical-align: top;
84
+ }
85
+ }
86
+
87
+ &__control {
88
+ @include dimensions.min-height(1.5);
89
+ @include motion.transition(background-color color outline-color);
90
+ @include utils.with-outline();
91
+ @include utils.focus-state(true, true, $control-selector);
92
+
93
+ background-color: var(--odx-input-control-background-color);
94
+ border-radius: var(--odx-v-border-radius-controls);
95
+ display: flex;
96
+ outline-color: var(--odx-input-control-outline-color);
97
+ overflow: hidden;
98
+ position: relative;
99
+
100
+ &::after {
101
+ @include motion.transition(background-color);
102
+
103
+ background-color: transparent;
104
+ bottom: 0;
105
+ content: '';
106
+ display: block;
107
+ height: 1px;
108
+ left: 0;
109
+ position: absolute;
110
+ width: 100%;
111
+ z-index: 1;
112
+ }
113
+
114
+ #{$control-selector} {
115
+ @include dimensions.padding-x($form-field-inner-padding);
116
+ @include typography.font-weight(medium);
117
+
118
+ vertical-align: middle;
119
+ width: 100%;
120
+
121
+ &::placeholder {
122
+ @include typography.font-weight(normal);
123
+
124
+ color: var(--odx-input-control-color);
125
+ opacity: 0.65;
126
+ }
127
+ }
128
+
129
+ > textarea {
130
+ @include dimensions.padding(0.25, top);
131
+
132
+ height: dimensions.get-size(3);
133
+ resize: vertical;
134
+ }
135
+
136
+ > select {
137
+ border-right: dimensions.get-size(0.25) solid transparent;
138
+ }
139
+
140
+ &:hover {
141
+ background-color: var(--odx-input-control-background-color-hover);
142
+ outline-color: var(--odx-input-control-outline-color-hover);
143
+ }
144
+
145
+ #{$root}.has-error & {
146
+ background-color: var(--odx-input-control-background-color-error);
147
+ outline-color: var(--odx-input-control-outline-color-error);
148
+
149
+ &:hover {
150
+ background-color: var(--odx-input-control-background-color);
151
+ }
152
+
153
+ &::after {
154
+ background-color: var(--odx-input-control-color-error);
155
+ }
156
+ }
157
+
158
+ #{$root}.is-disabled &,
159
+ #{$root}.is-readonly & {
160
+ &::after {
161
+ background-color: transparent;
162
+ }
163
+ }
164
+
165
+ #{$root}.is-disabled & {
166
+ background-color: var(--odx-input-control-background-color-disabled);
167
+ color: var(--odx-input-control-color-disabled);
168
+ outline-color: var(--odx-input-control-outline-color-disabled);
169
+
170
+ #{$control-selector} {
171
+ @include utils.non-interactive();
172
+
173
+ &::placeholder {
174
+ color: var(--odx-input-control-color-disabled);
175
+ }
176
+ }
177
+ }
178
+
179
+ #{$root}.is-readonly & {
180
+ background-color: var(--odx-input-control-background-color-readonly);
181
+ color: var(--odx-input-control-color-readonly);
182
+ outline-color: var(--odx-input-control-outline-color-readonly);
183
+ }
184
+ }
185
+
186
+ &__info {
187
+ @include dimensions.min-height($form-field-hint-height);
188
+ @include dimensions.line-height($form-field-hint-height);
189
+ @include motion.transition(opacity);
190
+ @include typography.font-size(-2);
191
+
192
+ color: var(--odx-form-field-hint-color);
193
+ text-align: right;
194
+ }
195
+ }
196
+
197
+ .odx-form-field.is-readonly,
198
+ .odx-form-group:has(.odx-form-field.is-readonly) {
199
+ .odx-form-field__info {
200
+ @include utils.non-interactive();
201
+
202
+ opacity: 0;
203
+ }
204
+ }
205
+
206
+ .odx-form-field-error {
207
+ color: var(--odx-input-control-color-error);
208
+ }
@@ -0,0 +1,40 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/utils';
4
+ @use '../abstract/typography';
5
+ @use '../layout/typography' as *;
6
+
7
+ .odx-header {
8
+ @include dimensions.padding(math.div(20, 24), 'left');
9
+ @include dimensions.padding(0.5, 'right');
10
+ @include dimensions.height(2);
11
+ @include utils.vertical-center-content();
12
+
13
+ background-color: var(--odx-c-background-content);
14
+
15
+ .odx-main-menu-button {
16
+ margin-left: dimensions.get-size(-1 * math.div(1, 3));
17
+ margin-right: dimensions.get-size(0.5);
18
+ }
19
+
20
+ &__title,
21
+ .odx-logo {
22
+ margin-right: auto;
23
+ }
24
+
25
+ &__title {
26
+ @extend .odx-title;
27
+ @extend .odx-title-6;
28
+ @include typography.prevent-text-overflow();
29
+ }
30
+
31
+ .odx-action-group:not(:last-child) {
32
+ border-right: 1px solid var(--odx-c-seperator);
33
+ margin-right: dimensions.get-size(0.5);
34
+ padding-right: dimensions.get-size(0.5);
35
+ }
36
+
37
+ &__title ~ .odx-logo {
38
+ display: none;
39
+ }
40
+ }
@@ -0,0 +1,35 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/utils';
4
+
5
+ $icon-sizes: (small math.div(16, 24) 1, large math.div(32, 24) 2, xlarge math.div(48, 24) 2);
6
+
7
+ .odx-icon {
8
+ @include dimensions.container(1);
9
+ @include utils.center-content(true);
10
+
11
+ direction: ltr;
12
+ font-size: dimensions.get-size(1);
13
+ text-rendering: auto;
14
+ text-transform: none;
15
+ user-select: none;
16
+ white-space: nowrap;
17
+
18
+ @each $size, $size_factor, $factor in $icon-sizes {
19
+ &--#{$size} {
20
+ @include dimensions.container($factor, $size_factor);
21
+
22
+ font-size: dimensions.get-size($size_factor);
23
+ }
24
+ }
25
+
26
+ &--inline {
27
+ @include dimensions.margin-y(0);
28
+
29
+ font-size: inherit;
30
+ height: auto;
31
+ line-height: inherit;
32
+ vertical-align: -0.15em;
33
+ width: auto;
34
+ }
35
+ }
@@ -0,0 +1,33 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/typography';
4
+
5
+ .odx-inline-message {
6
+ --odx-c-default: var(--blue-50);
7
+ --odx-c-warning: var(--yellow-50);
8
+ --odx-c-danger: var(--red-00);
9
+ --odx-c-success: var(--green-00);
10
+
11
+ $variants: default, warning, danger, success;
12
+
13
+ @include dimensions.padding(math.div(10, 24));
14
+
15
+ display: flex;
16
+ gap: dimensions.get-size(math.div(10, 24));
17
+
18
+ @each $variant in $variants {
19
+ &--#{$variant} {
20
+ background-color: var(--odx-c-#{$variant});
21
+ }
22
+ }
23
+
24
+ &--danger {
25
+ color: var(--red-700);
26
+ }
27
+
28
+ &__content {
29
+ @include typography.font-size(-1);
30
+
31
+ overflow: hidden;
32
+ }
33
+ }
@@ -0,0 +1,118 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/breakpoints';
3
+ @use '../abstract/dimensions';
4
+ @use '../abstract/motion';
5
+ @use '../abstract/typography';
6
+ @use '../abstract/utils';
7
+
8
+ .odx-launch-tile {
9
+ $root: &;
10
+ $main-padding: dimensions.get-size(math.div(12, 24));
11
+
12
+ @include motion.transition(box-shadow outline-color);
13
+ @include utils.interactive(false);
14
+ @include utils.with-outline-bold();
15
+
16
+ background-color: var(--odx-c-background-content);
17
+ behavior: button;
18
+ border-radius: var(--odx-v-border-radius);
19
+ display: block;
20
+ padding: $main-padding;
21
+ position: relative;
22
+
23
+ &:focus-visible,
24
+ &:hover,
25
+ &:focus-within:has(:focus-visible) {
26
+ box-shadow: var(--odx-v-box-shadow-layer-1);
27
+ }
28
+
29
+ &__container {
30
+ @include dimensions.padding-x(math.div(8, 24));
31
+ @include dimensions.padding-y(0.5);
32
+
33
+ display: flex;
34
+ gap: dimensions.get-size(math.div(16, 24));
35
+
36
+ @include breakpoints.up(phone) {
37
+ @include dimensions.padding(1, bottom);
38
+
39
+ flex-direction: column;
40
+ gap: dimensions.get-size(math.div(8, 24));
41
+ }
42
+ }
43
+
44
+ &__content {
45
+ flex: 1;
46
+ padding-right: dimensions.get-size(math.div(40, 24));
47
+
48
+ @include breakpoints.up(phone) {
49
+ padding-right: unset;
50
+ text-align: center;
51
+ }
52
+ }
53
+
54
+ &__title {
55
+ @include dimensions.margin-y(math.div(9, 24));
56
+ @include typography.font-weight(medium);
57
+
58
+ font-size: dimensions.get-size(math.div(20, 24));
59
+ line-height: dimensions.get-size(math.div(30, 24));
60
+ }
61
+
62
+ &__subtitle {
63
+ color: var(--gray-500);
64
+ }
65
+
66
+ &__title,
67
+ &__subtitle {
68
+ @include motion.transition(color);
69
+
70
+ display: block;
71
+
72
+ #{$root}.is-disabled & {
73
+ color: var(--odx-c-text-disabled);
74
+ }
75
+ }
76
+
77
+ &__footer {
78
+ display: flex;
79
+ gap: dimensions.get-size(math.div(12, 24));
80
+ justify-content: flex-end;
81
+
82
+ @include breakpoints.up(phone) {
83
+ justify-content: center;
84
+ padding-bottom: dimensions.get-size(math.div(12, 24));
85
+ }
86
+
87
+ .odx-button {
88
+ margin: 0;
89
+ }
90
+ }
91
+
92
+ .odx-action-group {
93
+ margin: 0;
94
+ position: absolute;
95
+ right: $main-padding;
96
+ top: $main-padding;
97
+ }
98
+
99
+ .odx-avatar {
100
+ @include dimensions.container(math.div(64, 24));
101
+ @include dimensions.margin-y(math.div(4, 24));
102
+
103
+ flex: 0 0 auto;
104
+
105
+ @include breakpoints.up(phone) {
106
+ @include dimensions.container(math.div(128, 24));
107
+
108
+ margin: dimensions.get-size(math.div(4, 24)) auto 0;
109
+ }
110
+ }
111
+
112
+ &.is-disabled {
113
+ .odx-avatar {
114
+ color: var(--odx-c-text-disabled);
115
+ filter: saturate(0);
116
+ }
117
+ }
118
+ }
@@ -1,16 +1,18 @@
1
- @use '../../base/mixins' as mx;
1
+ @use '../abstract/motion';
2
+ @use '../abstract/utils';
2
3
 
3
4
  .odx-link {
4
- @include mx.interactive();
5
- @include mx.transition(color background-color outline);
5
+ @include motion.transition(color background-color outline);
6
+ @include utils.interactive();
6
7
 
7
8
  border-radius: var(--odx-v-border-radius-controls);
8
9
  color: var(--odx-c-link);
9
10
  padding: 0 2px;
10
11
  position: relative;
12
+ user-select: auto;
11
13
 
12
14
  &::before {
13
- @include mx.transition(width);
15
+ @include motion.transition(width);
14
16
 
15
17
  background-color: currentcolor;
16
18
  bottom: 1px;