@transferwise/neptune-css 14.2.3-beta-03dc86c830.0 → 14.2.3

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.
@@ -0,0 +1 @@
1
+ :root{--ring-outline-width:2px;--ring-outline-offset:2px;--ring-outline-color:var(--color-content-primary)}:root .np-theme-personal,:root.np-theme-personal{--ring-outline-color:var(--color-interactive-primary)}.focus-ring:focus{outline:none}.focus-ring:focus-visible{outline:2px solid #37517e;outline:var(--ring-outline-color) solid var(--ring-outline-width);outline-offset:2px;outline-offset:var(--ring-outline-offset)}.ring-offset-0{--ring-outline-offset:0}.ring-inset{--ring-outline-width:3px;--ring-outline-offset:calc(var(--ring-outline-width)*-1)}.ring-negative{--ring-outline-color:var(--color-sentiment-negative)}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@transferwise/neptune-css",
3
3
  "description": "Neptune CSS library",
4
- "version": "14.2.3-beta-03dc86c830.0+03dc86c830",
4
+ "version": "14.2.3",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -53,5 +53,5 @@
53
53
  "bin": {
54
54
  "neptune-css-upgrade-util": "scripts/neptune-css-upgrader.js"
55
55
  },
56
- "gitHead": "03dc86c830d73faf4b1aadce08ea9c97cdcf7409"
56
+ "gitHead": "e8eb4c7770839c938152472fd7ba7fc89fd33dd5"
57
57
  }
@@ -4,6 +4,7 @@
4
4
  @import "./mixins/_tab-focus.less";
5
5
  @import (reference) "./mixins/_logical-properties.less";
6
6
  @import (reference) "./core/_typography.less";
7
+ @import (reference) "./ring.less";
7
8
 
8
9
  .btn {
9
10
  .np-text-body-large-bold;
@@ -41,16 +42,42 @@
41
42
  user-select: none;
42
43
 
43
44
  &:not(.disabled, :disabled, .np-dropdown-toggle):active,
44
- &:not(.disabled, :disabled, .np-dropdown-toggle).active,
45
- &:not(.disabled, :disabled, .np-dropdown-toggle):focus,
45
+ &:not(.disabled, :disabled, .np-dropdown-toggle).active {
46
+ .tab-focus();
47
+
48
+ outline-offset: -2px;
49
+
50
+ .np-theme-personal & {
51
+ outline: none;
52
+ }
53
+ }
54
+
55
+ &:not(.disabled, :disabled, .np-dropdown-toggle):focus-visible,
46
56
  &:not(.disabled, :disabled, .np-dropdown-toggle).focus {
47
57
  .tab-focus();
48
58
 
49
59
  outline-offset: -2px;
50
60
 
51
61
  .np-theme-personal & {
52
- outline: 3px solid var(--color-interactive-primary);
53
- outline-offset: 2px;
62
+ .ring();
63
+ }
64
+
65
+ &.btn-negative {
66
+ .np-theme-personal & {
67
+ outline-color: var(--color-sentiment-negative);
68
+ }
69
+
70
+ .np-theme-personal .critical-comms--cta & {
71
+ outline-color: var(--color-contrast);
72
+ }
73
+ }
74
+ }
75
+
76
+ &:not(.disabled, :disabled, .np-dropdown-toggle) {
77
+ &.btn-negative {
78
+ .np-theme-personal .critical-comms--cta & {
79
+ border: none;
80
+ }
54
81
  }
55
82
  }
56
83
 
@@ -63,9 +90,7 @@
63
90
  }
64
91
  }
65
92
 
66
- &:not(.disabled, :disabled):hover,
67
- &:not(.disabled, :disabled):focus,
68
- &:not(.disabled, :disabled).focus {
93
+ &:not(.disabled, :disabled):hover {
69
94
  color: var(--color-interactive-accent-hover);
70
95
  text-decoration: none;
71
96
  }
@@ -178,7 +203,7 @@
178
203
  }
179
204
 
180
205
  &:not(.disabled, :disabled):hover,
181
- &:not(.disabled, :disabled):focus {
206
+ &:not(.disabled, :disabled):focus-visible {
182
207
  color: var(--color-content-accent-hover);
183
208
  text-decoration: @link-decoration;
184
209
  border-color: transparent;
@@ -195,11 +220,10 @@
195
220
  text-decoration-thickness: 2px;
196
221
 
197
222
  &:not(.disabled, :disabled):hover,
198
- &:not(.disabled, :disabled):focus {
223
+ &:not(.disabled, :disabled):focus-visible {
199
224
  color: var(--color-interactive-primary-hover);
200
225
  border-color: transparent;
201
226
  text-decoration-thickness: 2px;
202
- background-color: transparent;
203
227
  }
204
228
 
205
229
  &:not(.disabled, :disabled):active {
@@ -395,7 +419,7 @@
395
419
  color: @brand-white;
396
420
 
397
421
  &:not(.disabled, :disabled):hover,
398
- &:not(.disabled, :disabled):focus {
422
+ &:not(.disabled, :disabled):focus-visible {
399
423
  background-color: @brand-grey-plus-10;
400
424
  background-color: rgba(24, 33, 56, 0.56);
401
425
  }
@@ -539,7 +563,7 @@ input[type="button"] {
539
563
  &:not(.disabled, :disabled).active,
540
564
  &:not(.disabled, :disabled):active,
541
565
  &:not(.disabled, :disabled).focus,
542
- &:not(.disabled, :disabled):focus {
566
+ &:not(.disabled, :disabled):focus-visible {
543
567
  border-color: var(--color-interactive-accent-active);
544
568
  outline: 0 none !important;
545
569
 
@@ -1,20 +1,20 @@
1
1
  @import (reference) "../variables/neptune-tokens.less";
2
2
  @import (reference) "./core/_typography.less";
3
+ @import (reference) "./ring.less";
3
4
 
4
5
  .decision {
5
6
  cursor: pointer;
6
7
  margin-bottom: 0 !important;
7
8
  border: 0;
8
9
  align-items: center;
9
- transition: background-color ease 350ms, outline-offset 0.1s ease;
10
+ transition: background-color ease 350ms;
10
11
  background-color: transparent;
11
12
  display: block;
12
13
 
13
- &:not(.np-option):focus,
14
14
  &:not(.np-option):focus-visible,
15
- &:not(.np-option):focus-within {
16
- outline: 3px solid var(--color-interactive-primary);
17
- outline-offset: 2px;
15
+ &:not(.np-option):has(:focus-visible) {
16
+ .ring();
17
+ .ring-offset-0();
18
18
  }
19
19
 
20
20
  &__title {
@@ -42,14 +42,6 @@
42
42
  // Bit of a hack for our calculators to make the two controls the same width.
43
43
  min-width: 104px;
44
44
 
45
- .np-theme-personal &,
46
- .np-theme-personal--forest-green &,
47
- .np-theme-personal--dark & {
48
- background-color: var(--color-background-elevated);
49
- border-radius: var(--radius-medium);
50
- box-shadow: 0 0 40px rgb(69 71 69 / 20%);
51
- }
52
-
53
45
  @media (min-width: @screen-sm-min) {
54
46
  min-width: 160px;
55
47
  }
@@ -83,12 +75,6 @@
83
75
  display: block;
84
76
  white-space: normal;
85
77
  }
86
-
87
- .np-theme-personal &,
88
- .np-theme-personal--forest-green &,
89
- .np-theme-personal--dark & {
90
- border-radius: var(--radius-small);
91
- }
92
78
  }
93
79
 
94
80
  > li:first-child > a {
@@ -7,6 +7,7 @@
7
7
  @import (reference) '../mixins/_logical-properties.less';
8
8
  @import (reference) '../core/_typography.less';
9
9
 
10
+
10
11
  //
11
12
  // Forms
12
13
  // --------------------------------------------------
@@ -1030,7 +1031,7 @@ input[type="password"] {
1030
1031
  .form-control,
1031
1032
  .radio > label,
1032
1033
  .checkbox > label {
1033
- box-shadow: 0 0 0 1px var(--color-interactive-secondary);
1034
+ box-shadow: inset 0 0 0 1px var(--color-interactive-secondary);
1034
1035
  transition: box-shadow 0.3s ease-in-out;
1035
1036
  }
1036
1037
 
@@ -1044,39 +1045,20 @@ input[type="password"] {
1044
1045
  .form-control:not(.disabled, :disabled):hover,
1045
1046
  .radio > label:not(.disabled, :disabled):hover,
1046
1047
  .checkbox > label:not(.disabled, :disabled):hover {
1047
- box-shadow: 0 0 0 2px var(--color-interactive-secondary-hover);
1048
- }
1049
-
1050
- .btn-input:not(.disabled, :disabled):active,
1051
- .btn-input:not(.disabled, :disabled):focus,
1052
- .btn-input:not(.disabled, :disabled):focus-within,
1053
- .input-group:not(.disabled, :disabled):active,
1054
- .input-group:not(.disabled, :disabled):focus,
1055
- .input-group:not(.disabled, :disabled):focus-within,
1056
- .form-control:not(.disabled, :disabled):active,
1057
- .form-control:not(.disabled, :disabled):focus,
1058
- .form-control:not(.disabled, :disabled):focus-within,
1059
- .radio > label:not(.disabled, :disabled):active,
1060
- .radio > label:not(.disabled, :disabled):focus,
1061
- .radio > label:not(.disabled, :disabled):focus-within,
1062
- .checkbox > label:not(.disabled, :disabled):active,
1063
- .checkbox > label:not(.disabled, :disabled):focus,
1064
- .checkbox > label:not(.disabled, :disabled):focus-within {
1065
- box-shadow: 0 0 0 3px var(--color-interactive-primary);
1048
+ box-shadow: inset 0 0 0 2px var(--color-interactive-secondary-hover);
1066
1049
  }
1067
1050
 
1068
- .checkbox > label:not(.disabled, :disabled):active input[type=checkbox]+.tw-checkbox-button,
1069
- .checkbox > label:not(.disabled, :disabled):focus input[type=checkbox]+.tw-checkbox-button,
1070
- .checkbox > label:not(.disabled, :disabled):focus-within input[type=checkbox]+.tw-checkbox-button {
1071
- box-shadow: inset 0 0 0 3px var(--color-interactive-primary-hover);
1072
- background-color: var(--color-interactive-primary-hover);
1073
- }
1074
-
1075
- .radio > label:not(.disabled, :disabled):active input[type=radio]+.tw-radio-button,
1076
- .radio > label:not(.disabled, :disabled):focus input[type=radio]+.tw-radio-button,
1077
- .radio > label:not(.disabled, :disabled):focus-within input[type=radio]+.tw-radio-button {
1078
- outline: 3px solid var(--color-interactive-primary);
1079
- offset: 2px;
1051
+ .btn-input:not(.disabled, :disabled):focus-visible,
1052
+ .btn-input:not(.disabled, :disabled):has(:focus-visible),
1053
+ .input-group:not(.disabled, :disabled):focus-visible,
1054
+ .input-group:not(.disabled, :disabled):has(.form-control:focus-visible),
1055
+ .form-control:not(.disabled, :disabled):focus-visible,
1056
+ .form-control:not(.disabled, :disabled):has(:focus-visible),
1057
+ .radio > label:not(.disabled, :disabled):focus-visible,
1058
+ .radio > label:not(.disabled, :disabled):has(:focus-visible),
1059
+ .checkbox > label:not(.disabled, :disabled):focus-visible,
1060
+ .checkbox > label:not(.disabled, :disabled):has(:focus-visible) {
1061
+ box-shadow: inset 0 0 0 3px var(--color-interactive-primary);
1080
1062
  }
1081
1063
 
1082
1064
  .has-error {
@@ -1085,14 +1067,14 @@ input[type="password"] {
1085
1067
  .form-control,
1086
1068
  .radio > label,
1087
1069
  .checkbox > label {
1088
- box-shadow: 0 0 0 2px var(--color-sentiment-negative);
1070
+ box-shadow: inset 0 0 0 2px var(--color-sentiment-negative);
1089
1071
  }
1090
1072
 
1091
1073
  .input-group:not(.disabled, :disabled):hover,
1092
1074
  .form-control:not(.disabled, :disabled):hover,
1093
1075
  .radio > label:not(.disabled, :disabled):hover,
1094
1076
  .checkbox > label:not(.disabled, :disabled):hover {
1095
- box-shadow: 0 0 0 2px var(--color-sentiment-negative-hover);
1077
+ box-shadow: inset 0 0 0 2px var(--color-sentiment-negative-hover);
1096
1078
  }
1097
1079
 
1098
1080
  .input-group:not(.disabled, :disabled):active,
@@ -1107,7 +1089,7 @@ input[type="password"] {
1107
1089
  .checkbox > label:not(.disabled, :disabled):active,
1108
1090
  .checkbox > label:not(.disabled, :disabled):focus,
1109
1091
  .checkbox > label:not(.disabled, :disabled):focus-within {
1110
- box-shadow: 0 0 0 3px var(--color-sentiment-negative);
1092
+ box-shadow: inset 0 0 0 3px var(--color-sentiment-negative);
1111
1093
  }
1112
1094
 
1113
1095
  .tw-radio-button{
@@ -51,7 +51,7 @@
51
51
  border-color: var(--color-interactive-secondary-hover);
52
52
 
53
53
  .np-theme-personal & {
54
- box-shadow: inset 0 0 0 2px var(--color-interactive-secondary-hover);
54
+ box-shadow: inset 0 0 0 1px var(--color-interactive-secondary-hover);
55
55
  }
56
56
  }
57
57
 
@@ -79,7 +79,7 @@
79
79
 
80
80
  .np-theme-personal & {
81
81
  background-color: var(--color-interactive-primary);
82
- box-shadow: inset 0 0 0 3px var(--color-interactive-primary);
82
+ box-shadow: inset 0 0 0 1px var(--color-interactive-primary);
83
83
  }
84
84
  }
85
85
 
@@ -92,7 +92,7 @@
92
92
  .np-theme-personal & {
93
93
  border-color: var(--color-interactive-primary-hover) !important;
94
94
  background-color: var(--color-interactive-primary-hover);
95
- box-shadow: inset 0 0 0 3px var(--color-interactive-primary-hover);
95
+ box-shadow: inset 0 0 0 1px var(--color-interactive-primary-hover);
96
96
  }
97
97
  }
98
98
 
@@ -105,7 +105,7 @@
105
105
  .np-theme-personal & {
106
106
  border-color: var(--color-interactive-primary-active) !important;
107
107
  background-color: var(--color-interactive-primary-active);
108
- box-shadow: inset 0 0 0 3px var(--color-interactive-primary-active);
108
+ box-shadow: inset 0 0 0 1px var(--color-interactive-primary-active);
109
109
  }
110
110
  }
111
111
 
@@ -141,14 +141,15 @@
141
141
  border-radius: 50%;
142
142
  border: 1px solid var(--color-interactive-secondary);
143
143
  background: var(--color-background-screen);
144
- display: inline-block;
144
+ display: inline-flex;
145
+ align-items: center;
146
+ justify-content: center;
145
147
  padding: 0;
146
- vertical-align: middle;
147
148
  transition: border 0.15s ease-in-out;
148
149
 
149
150
  .np-theme-personal & {
150
151
  border-color: transparent;
151
- box-shadow: 0 0 0 1px var(--color-interactive-secondary);
152
+ box-shadow: inset 0 0 0 1px var(--color-interactive-secondary);
152
153
  position: relative;
153
154
  top: 0;
154
155
  left: 0;
@@ -159,22 +160,9 @@
159
160
  text-align: center;
160
161
  width: 12px;
161
162
  height: 12px;
162
- margin: 5px;
163
163
  display: block;
164
164
  opacity: 0;
165
165
  transition: all 0.15s ease-in-out;
166
-
167
- .np-theme-personal & {
168
- max-height: 0;
169
- max-width: 0;
170
- opacity: 1;
171
- position: absolute;
172
- top: 0;
173
- right: 0;
174
- bottom: 0;
175
- left: 0;
176
- margin: auto;
177
- }
178
166
  }
179
167
 
180
168
  .radio:not(.disabled, :disabled):hover &,
@@ -183,9 +171,12 @@
183
171
 
184
172
  .np-theme-personal & {
185
173
  border-color: transparent;
186
- box-shadow: 0 0 0 2px var(--color-interactive-secondary-hover);
174
+ box-shadow: inset 0 0 0 1px var(--color-interactive-secondary-hover);
175
+
176
+ &[checked],
187
177
  &.checked {
188
- box-shadow: 0 0 0 1px var(--color-interactive-primary-hover);
178
+ box-shadow: inset 0 0 0 1px var(--color-interactive-primary);
179
+
189
180
  .tw-radio-check {
190
181
  background-color: var(--color-interactive-primary-hover);
191
182
  }
@@ -212,7 +203,7 @@
212
203
 
213
204
  .np-theme-personal & {
214
205
  border-color: transparent !important;
215
- box-shadow: 0 0 0 1px var(--color-interactive-primary);
206
+ box-shadow: inset 0 0 0 1px var(--color-interactive-primary);
216
207
 
217
208
  .tw-radio-check {
218
209
  background-color: var(--color-interactive-primary);
@@ -284,6 +275,7 @@
284
275
  align-items: center;
285
276
  // Added rtl mixing even the horizontal values are equal, to increase specificity created in line 11
286
277
  .padding-shorthand(var(--size-8) var(--size-16));
278
+
287
279
  line-height: var(--line-height-24);
288
280
 
289
281
  .np-checkbox__text,
@@ -175,16 +175,25 @@
175
175
  .border-radius(right, @border-radius-base);
176
176
  }
177
177
 
178
+ /* TODO: Remove this rule group once the brand refresh is out */
178
179
  // stylelint-disable-next-line no-duplicate-selectors
179
180
  .input-group {
180
181
  > :first-child .btn,
181
182
  > :first-child .btn-group {
182
183
  .border-radius(right, 0);
184
+
185
+ .np-theme-personal & {
186
+ .border-radius(left, var(--radius-small));
187
+ }
183
188
  }
184
189
 
185
190
  > :last-child .btn,
186
191
  > :last-child .btn-group {
187
192
  .border-radius(left, 0);
193
+
194
+ .np-theme-personal & {
195
+ .border-radius(left, var(--radius-small));
196
+ }
188
197
  }
189
198
  }
190
199
 
@@ -15,13 +15,6 @@
15
15
  border-color: @border;
16
16
  transition: color, background-color 0.15s ease-in-out;
17
17
 
18
- &:not(.disabled, :disabled):focus,
19
- &:not(.disabled, :disabled).focus {
20
- color: @color-hover;
21
- background-color: @background-hover;
22
- border-color: @border-hover;
23
- }
24
-
25
18
  &:not(.disabled, :disabled):hover {
26
19
  color: @color-hover;
27
20
  background-color: @background-hover;
@@ -35,9 +28,7 @@
35
28
  background-color: @background-active;
36
29
  border-color: @border-active;
37
30
 
38
- &:not(.disabled, :disabled):hover,
39
- &:not(.disabled, :disabled):focus,
40
- &:not(.disabled, :disabled).focus {
31
+ &:not(.disabled, :disabled):hover {
41
32
  color: @color-active;
42
33
  background-color: @background-active;
43
34
  border-color: @border-active;
@@ -34,6 +34,7 @@
34
34
  @import "./popovers.less";
35
35
  @import "./process.less";
36
36
  @import "./progress-bars.less";
37
+ @import "./ring.less";
37
38
  @import "./sequences.less";
38
39
  @import "./table.less";
39
40
  @import "./tooltip.less";
@@ -0,0 +1,38 @@
1
+ :root {
2
+ --ring-outline-width: 2px;
3
+ --ring-outline-offset: 2px;
4
+ --ring-outline-color: var(--color-content-primary);
5
+
6
+ &.np-theme-personal,
7
+ & .np-theme-personal {
8
+ --ring-outline-color: var(--color-interactive-primary);
9
+ }
10
+ }
11
+
12
+ .ring() {
13
+ outline: var(--ring-outline-color) solid var(--ring-outline-width);
14
+ outline-offset: var(--ring-outline-offset);
15
+ }
16
+
17
+ .focus-ring {
18
+ &:focus {
19
+ outline: none;
20
+ }
21
+
22
+ &:focus-visible {
23
+ .ring();
24
+ }
25
+ }
26
+
27
+ .ring-offset-0 {
28
+ --ring-outline-offset: 0;
29
+ }
30
+
31
+ .ring-inset {
32
+ --ring-outline-width: 3px;
33
+ --ring-outline-offset: calc(-1 * var(--ring-outline-width));
34
+ }
35
+
36
+ .ring-negative {
37
+ --ring-outline-color: var(--color-sentiment-negative);
38
+ }