@itwin/itwinui-css 0.41.1 → 0.44.0

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 (60) hide show
  1. package/css/alert.css +46 -61
  2. package/css/all.css +755 -715
  3. package/css/breadcrumbs.css +7 -20
  4. package/css/button.css +172 -194
  5. package/css/code.css +6 -9
  6. package/css/color-picker.css +14 -14
  7. package/css/date-picker.css +91 -85
  8. package/css/expandable-block.css +13 -9
  9. package/css/file-upload.css +4 -3
  10. package/css/footer.css +7 -20
  11. package/css/global.css +7 -9
  12. package/css/header.css +20 -38
  13. package/css/inputs.css +111 -80
  14. package/css/side-navigation.css +1 -16
  15. package/css/slider.css +7 -10
  16. package/css/table.css +173 -34
  17. package/css/tabs.css +8 -3
  18. package/css/tag.css +17 -18
  19. package/css/tile.css +0 -14
  20. package/css/time-picker.css +26 -18
  21. package/css/toast-notification.css +12 -49
  22. package/css/toggle-switch.css +7 -4
  23. package/css/tree.css +2 -3
  24. package/css/wizard.css +4 -4
  25. package/package.json +3 -3
  26. package/scss/alert/alert.scss +4 -2
  27. package/scss/button/borderless.scss +10 -26
  28. package/scss/button/button-group.scss +68 -46
  29. package/scss/button/cta.scss +10 -25
  30. package/scss/button/default.scss +11 -26
  31. package/scss/button/high-visibility.scss +10 -25
  32. package/scss/button/split-menu.scss +34 -20
  33. package/scss/color-picker/color-picker.scss +2 -25
  34. package/scss/date-picker/classes.scss +20 -0
  35. package/scss/date-picker/date-picker.scss +88 -100
  36. package/scss/expandable-block/block.scss +1 -0
  37. package/scss/file-upload/file-upload.scss +2 -2
  38. package/scss/footer/footer.scss +0 -2
  39. package/scss/header/header.scss +17 -23
  40. package/scss/inputs/checkbox-radio.scss +28 -18
  41. package/scss/inputs/checkbox.scss +9 -8
  42. package/scss/inputs/input.scss +1 -14
  43. package/scss/inputs/labeled-inputs.scss +2 -1
  44. package/scss/inputs/radio-tile.scss +9 -4
  45. package/scss/inputs/select.scss +1 -1
  46. package/scss/side-navigation/side-navigation.scss +1 -33
  47. package/scss/slider/slider.scss +1 -2
  48. package/scss/style/mixins.scss +15 -17
  49. package/scss/table/classes.scss +12 -0
  50. package/scss/table/paginator.scss +39 -32
  51. package/scss/table/table.scss +17 -8
  52. package/scss/tabs/default.scss +5 -0
  53. package/scss/tabs/tabs.scss +1 -8
  54. package/scss/tag/tag.scss +9 -1
  55. package/scss/time-picker/time-picker.scss +1 -0
  56. package/scss/toast-notification/categories.scss +5 -2
  57. package/scss/toast-notification/toast.scss +0 -1
  58. package/scss/toggle-switch/toggle-switch.scss +7 -3
  59. package/scss/tree/tree.scss +2 -2
  60. package/scss/wizard/wizard.scss +3 -3
@@ -14,118 +14,106 @@
14
14
  @include themed {
15
15
  background-color: t(iui-color-background-1);
16
16
  }
17
-
18
- @include iui-calendar;
19
17
  }
20
18
 
21
- @mixin iui-calendar {
22
- > .iui-calendar {
23
- > .iui-header {
24
- border: none;
25
- padding: 0;
26
- position: relative;
27
- font-weight: $iui-font-weight-bold;
28
- @include themed {
29
- background-color: t(iui-color-background-1);
30
- }
31
-
32
- > .iui-month-year {
33
- display: inline-flex;
34
- width: 100%;
35
- align-items: center;
36
- justify-content: space-between;
37
- padding: 0 $iui-xs;
38
- box-sizing: border-box;
19
+ @mixin iui-calendar-month-year {
20
+ display: inline-flex;
21
+ width: 100%;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ padding: 0 $iui-xs;
25
+ box-sizing: border-box;
26
+ font-weight: $iui-font-weight-bold;
27
+ @include themed {
28
+ background-color: t(iui-color-background-1);
29
+ }
39
30
 
40
- > span {
41
- margin: 0 $iui-xs;
42
- width: 156px;
43
- white-space: nowrap;
44
- display: inline-flex;
45
- flex-shrink: 0;
46
- align-items: center;
47
- justify-content: center;
48
- line-height: $iui-baseline * 4;
49
- }
31
+ > span {
32
+ margin: 0 $iui-xs;
33
+ width: 156px;
34
+ white-space: nowrap;
35
+ display: inline-flex;
36
+ flex-shrink: 0;
37
+ align-items: center;
38
+ justify-content: center;
39
+ line-height: $iui-baseline * 4;
40
+ }
41
+ }
50
42
 
51
- .iui-month {
52
- overflow: hidden;
53
- max-width: 15ch;
54
- text-overflow: ellipsis;
55
- white-space: nowrap;
56
- flex-shrink: 0;
57
- }
58
- }
43
+ @mixin iui-calendar-month {
44
+ overflow: hidden;
45
+ max-width: 15ch;
46
+ text-overflow: ellipsis;
47
+ white-space: nowrap;
48
+ flex-shrink: 0;
49
+ }
59
50
 
60
- > .iui-weekdays {
61
- line-height: $iui-baseline * 3;
62
- display: flex;
63
- justify-content: space-evenly;
64
- align-items: center;
65
- padding: 0 $iui-s;
66
- @include themed {
67
- background-color: t(iui-color-background-2);
68
- }
51
+ @mixin iui-calendar-weekdays {
52
+ line-height: $iui-baseline * 3;
53
+ display: flex;
54
+ justify-content: space-evenly;
55
+ align-items: center;
56
+ padding: 0 $iui-s;
57
+ font-weight: $iui-font-weight-bold;
58
+ @include themed {
59
+ background-color: t(iui-color-background-2);
60
+ }
69
61
 
70
- > div {
71
- white-space: nowrap;
72
- overflow: hidden;
73
- width: $iui-xl;
74
- text-align: center;
75
- }
76
- }
77
- }
62
+ > div {
63
+ white-space: nowrap;
64
+ overflow: hidden;
65
+ width: $iui-xl;
66
+ text-align: center;
67
+ }
68
+ }
78
69
 
79
- > .iui-dates {
80
- > .iui-week {
81
- white-space: nowrap;
82
- height: $iui-baseline * 3;
83
- display: flex;
84
- align-items: center;
85
- justify-content: space-evenly;
86
- padding: 0 $iui-s;
70
+ @mixin iui-calendar-week {
71
+ white-space: nowrap;
72
+ height: $iui-baseline * 3;
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: space-evenly;
76
+ padding: 0 $iui-s;
77
+ }
87
78
 
88
- > .iui-date {
89
- @include iui-focus;
90
- cursor: pointer;
91
- display: inline-block;
92
- width: $iui-baseline * 3;
93
- line-height: $iui-baseline * 3;
79
+ @mixin iui-calendar-day {
80
+ @include iui-focus;
81
+ cursor: pointer;
82
+ display: inline-block;
83
+ width: $iui-baseline * 3;
84
+ line-height: $iui-baseline * 3;
85
+ border-radius: $iui-border-radius;
94
86
 
95
- &:hover:not(.iui-selected) {
96
- border-radius: $iui-border-radius;
97
- font-weight: $iui-font-weight-semibold;
98
- @include themed {
99
- color: t(iui-color-foreground-primary);
100
- background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
101
- }
102
- }
87
+ &.iui-today {
88
+ font-weight: $iui-font-weight-semibold;
89
+ border-radius: 50%;
90
+ @include themed {
91
+ background-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-6));
92
+ }
93
+ }
103
94
 
104
- &.iui-today {
105
- font-weight: $iui-font-weight-semibold;
106
- border-radius: 50%;
107
- @include themed {
108
- background-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-6));
109
- }
110
- }
95
+ &:hover {
96
+ font-weight: $iui-font-weight-semibold;
97
+ @include themed {
98
+ color: t(iui-color-foreground-primary);
99
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
100
+ }
101
+ }
111
102
 
112
- &.iui-selected {
113
- font-weight: $iui-font-weight-semibold;
114
- border-radius: $iui-border-radius;
115
- cursor: default;
116
- @include themed {
117
- background-color: t(iui-color-background-primary);
118
- color: t(iui-color-foreground-accessory);
119
- }
120
- }
103
+ &.iui-selected {
104
+ font-weight: $iui-font-weight-semibold;
105
+ border-radius: $iui-border-radius;
106
+ cursor: default;
107
+ @include themed {
108
+ background-color: t(iui-color-background-primary);
109
+ color: t(iui-color-foreground-accessory);
110
+ }
111
+ @include iui-focus($color: var(--iui-color-foreground-accessory), $offset: -3px);
112
+ }
121
113
 
122
- &.iui-outside-month {
123
- @include themed {
124
- color: t(iui-text-color-muted);
125
- }
126
- }
127
- }
128
- }
114
+ &.iui-outside-month {
115
+ @include themed {
116
+ color: t(iui-text-color-muted);
129
117
  }
130
118
  }
131
119
  }
@@ -15,6 +15,7 @@
15
15
  }
16
16
 
17
17
  > .iui-header {
18
+ @include iui-focus;
18
19
  display: flex;
19
20
  align-items: center;
20
21
  padding: $iui-baseline $iui-sm;
@@ -52,9 +52,9 @@
52
52
  flex-direction: row;
53
53
 
54
54
  &:focus-within {
55
- outline: 0;
56
55
  @include themed {
57
- box-shadow: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-5)) 0 0 0 2px;
56
+ outline: 2px solid t(iui-color-foreground-primary);
57
+ outline-offset: -2px;
58
58
  }
59
59
  }
60
60
  }
@@ -14,7 +14,6 @@
14
14
  list-style-type: none;
15
15
  margin: 0 auto;
16
16
  padding: 0;
17
- overflow: hidden;
18
17
  display: flex;
19
18
  justify-content: center;
20
19
  align-items: center;
@@ -43,7 +42,6 @@
43
42
 
44
43
  > a {
45
44
  @include iui-anchor;
46
- @include iui-focus;
47
45
 
48
46
  &,
49
47
  &:hover {
@@ -186,8 +186,7 @@
186
186
  color: unset;
187
187
  // #endregion
188
188
 
189
- &:hover,
190
- &:focus {
189
+ &:hover {
191
190
  @include themed {
192
191
  background-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-6));
193
192
  }
@@ -314,9 +313,13 @@
314
313
  }
315
314
 
316
315
  @mixin iui-header-split-button {
317
- height: 100%;
318
- display: flex;
319
- overflow: hidden;
316
+ &,
317
+ > * {
318
+ height: 100%;
319
+ display: flex;
320
+ overflow: hidden;
321
+ }
322
+
320
323
  max-width: 25vw;
321
324
 
322
325
  .iui-button {
@@ -324,8 +327,10 @@
324
327
  padding: 0 $iui-xs;
325
328
  }
326
329
 
327
- .iui-button:first-child {
328
- padding-left: $iui-sm;
330
+ > *:first-child {
331
+ .iui-button {
332
+ padding-left: $iui-sm;
333
+ }
329
334
  }
330
335
 
331
336
  &.iui-active {
@@ -343,8 +348,10 @@
343
348
  display: none;
344
349
  }
345
350
  }
351
+ }
346
352
 
347
- &:last-child:hover {
353
+ > *:last-child {
354
+ > .iui-button:hover {
348
355
  @include themed {
349
356
  background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
350
357
  }
@@ -394,19 +401,6 @@
394
401
  }
395
402
  }
396
403
 
397
- // Focus styling - blue outline
398
- &:focus {
399
- @include themed {
400
- box-shadow: t(iui-focus-box-shadow), 0 $iui-xxs 0 0 t(iui-color-foreground-primary);
401
- }
402
- }
403
-
404
- &:focus:not(:focus-visible) {
405
- @include themed {
406
- box-shadow: 0 $iui-xxs 0 0 t(iui-color-foreground-primary);
407
- }
408
- }
409
-
410
404
  // Disabled state
411
405
  &.iui-disabled,
412
406
  &:disabled {
@@ -415,13 +409,13 @@
415
409
  box-shadow: 0 $iui-xxs 0 0 rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
416
410
  }
417
411
 
418
- .iui-label {
412
+ .iui-button-label {
419
413
  @include themed {
420
414
  color: t(iui-icons-color-actionable-disabled);
421
415
  }
422
416
  }
423
417
 
424
- .iui-icon,
418
+ .iui-button-icon,
425
419
  svg {
426
420
  @include themed {
427
421
  fill: t(iui-icons-color-actionable-disabled);
@@ -11,7 +11,6 @@
11
11
  user-select: none;
12
12
  position: relative;
13
13
  cursor: pointer;
14
-
15
14
  @include themed {
16
15
  color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-2));
17
16
  }
@@ -30,37 +29,52 @@
30
29
 
31
30
  .iui-checkbox-checkmark,
32
31
  .iui-radio-dot {
33
- box-sizing: border-box;
34
32
  width: $iui-icons-default;
35
33
  height: $iui-icons-default;
36
34
  margin: 0;
37
35
  display: flex;
36
+ flex-shrink: 0;
38
37
  justify-content: center;
39
38
  align-items: center;
40
-
39
+ position: relative;
40
+ isolation: isolate;
41
41
  @include themed {
42
- border: 1px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
42
+ border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
43
43
  background-color: t(iui-color-background-1);
44
44
  }
45
45
 
46
+ &::after {
47
+ content: '';
48
+ position: absolute;
49
+ inset: 0;
50
+ z-index: -1;
51
+ transition: border-color $iui-speed-fast ease-out;
52
+ border-radius: inherit;
53
+ border-style: solid;
54
+ border-width: 1px;
55
+ border-color: inherit;
56
+ }
57
+
46
58
  svg:not(.iui-radial) {
47
- width: $iui-sm;
48
- height: $iui-sm;
59
+ width: 100%;
60
+ height: 100%;
61
+ @include themed {
62
+ fill: t(iui-icons-color-primary);
63
+ }
49
64
 
50
65
  > * {
51
66
  opacity: 0;
52
67
  @media (prefers-reduced-motion: no-preference) {
53
68
  transition: opacity $iui-speed-fast ease;
54
69
  }
55
- @include themed {
56
- fill: t(iui-icons-color-primary);
57
- }
58
70
  }
59
71
  }
60
72
  }
61
73
 
62
74
  > .iui-label {
63
75
  margin-right: $iui-s;
76
+ display: flex;
77
+ align-items: center;
64
78
 
65
79
  svg {
66
80
  width: $iui-icons-default;
@@ -85,9 +99,6 @@
85
99
  @include themed {
86
100
  border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-2));
87
101
  }
88
- @media (prefers-reduced-motion: no-preference) {
89
- transition: all $iui-speed-fast ease-out;
90
- }
91
102
  }
92
103
 
93
104
  // Selected checkboxes & radios border opacity increase
@@ -115,15 +126,16 @@
115
126
  ~ .iui-checkbox-checkmark,
116
127
  ~ .iui-radio-dot {
117
128
  @include themed {
118
- box-shadow: t(iui-focus-box-shadow);
129
+ outline: 2px solid t(iui-color-foreground-primary);
119
130
  }
131
+ outline-offset: -1px;
120
132
  }
121
133
  }
122
134
 
123
135
  &:focus:not(:focus-visible) {
124
136
  ~ .iui-checkbox-checkmark,
125
137
  ~ .iui-radio-dot {
126
- box-shadow: none;
138
+ outline: none;
127
139
  }
128
140
  }
129
141
  }
@@ -132,7 +144,6 @@
132
144
  input:disabled ~ .iui-checkbox-checkmark,
133
145
  input:disabled ~ .iui-radio-dot {
134
146
  cursor: not-allowed;
135
-
136
147
  @include themed {
137
148
  background-color: t(iui-color-background-disabled);
138
149
  border-color: t(iui-color-background-disabled);
@@ -140,9 +151,8 @@
140
151
  }
141
152
 
142
153
  // Styles disabled checks
143
- input:disabled ~ .iui-checkbox-checkmark path,
144
- input:disabled ~ .iui-checkbox-checkmark g,
145
- input:disabled ~ .iui-radio-dot circle {
154
+ input:disabled ~ .iui-checkbox-checkmark svg,
155
+ input:disabled ~ .iui-radio-dot svg {
146
156
  @include themed {
147
157
  fill: t(iui-icons-color-actionable-disabled);
148
158
  }
@@ -14,7 +14,7 @@
14
14
  cursor: wait;
15
15
 
16
16
  input ~ .iui-checkbox-checkmark {
17
- border: none;
17
+ border-color: transparent;
18
18
  background-color: transparent;
19
19
  }
20
20
 
@@ -35,8 +35,8 @@
35
35
  }
36
36
  }
37
37
 
38
- input ~ .iui-checkbox-checkmark,
39
- &:hover > input:enabled ~ .iui-checkbox-checkmark {
38
+ input ~ .iui-checkbox-checkmark::after,
39
+ &:hover > input:enabled ~ .iui-checkbox-checkmark::after {
40
40
  border: none;
41
41
  }
42
42
 
@@ -44,11 +44,6 @@
44
44
  background-color: transparent;
45
45
  }
46
46
 
47
- .iui-checkbox-checkmark svg:not(.iui-radial) {
48
- width: $iui-icons-default;
49
- height: $iui-icons-default;
50
- }
51
-
52
47
  input:checked ~ .iui-checkbox-checkmark .iui-uncheck,
53
48
  input:indeterminate ~ .iui-checkbox-checkmark .iui-uncheck {
54
49
  opacity: 0;
@@ -61,5 +56,11 @@
61
56
  fill: t(iui-icons-color-actionable);
62
57
  }
63
58
  }
59
+
60
+ input:disabled ~ .iui-checkbox-checkmark .iui-uncheck {
61
+ @include themed {
62
+ fill: t(iui-icons-color-actionable-disabled);
63
+ }
64
+ }
64
65
  }
65
66
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  @mixin iui-input {
6
6
  @include iui-reset;
7
+ @include iui-focus($offset: -2px, $thickness: 2px);
7
8
  width: 100%;
8
9
  font-family: inherit;
9
10
  font-size: $iui-font-size;
@@ -43,11 +44,6 @@
43
44
  }
44
45
  }
45
46
 
46
- &:-webkit-autofill {
47
- @include iui-input-autofill;
48
- }
49
-
50
- // stylelint-disable-next-line selector-pseudo-class-no-unknown
51
47
  &:autofill {
52
48
  @include iui-input-autofill;
53
49
  }
@@ -68,15 +64,6 @@
68
64
  }
69
65
  cursor: not-allowed;
70
66
  }
71
-
72
- &:focus {
73
- outline: 0;
74
-
75
- @include themed {
76
- border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
77
- box-shadow: t(iui-focus-box-shadow);
78
- }
79
- }
80
67
  }
81
68
 
82
69
  @mixin iui-input-autofill {
@@ -339,7 +339,8 @@
339
339
  &:focus {
340
340
  @include themed {
341
341
  border-bottom: $iui-xxs solid t(iui-color-foreground-#{$status});
342
- box-shadow: rgba(t(iui-color-foreground-#{$status}-rgb), t(iui-opacity-5)) 0 0 0 $iui-xxs;
342
+ outline: 2px solid t(iui-color-foreground-#{$status});
343
+ outline-offset: -2px;
343
344
  }
344
345
  }
345
346
  }
@@ -105,11 +105,16 @@
105
105
  }
106
106
 
107
107
  // Adds focus to enabled radio tiles
108
- input:enabled:focus ~ .iui-radio-tile {
109
- outline: 0;
108
+ input:enabled {
109
+ &:focus ~ .iui-radio-tile {
110
+ @include themed {
111
+ outline: 2px solid t(iui-color-foreground-primary);
112
+ outline-offset: -4px;
113
+ }
114
+ }
110
115
 
111
- @include themed {
112
- box-shadow: t(iui-focus-box-shadow);
116
+ &:focus:not(:focus-visible) ~ .iui-radio-tile {
117
+ outline: none;
113
118
  }
114
119
  }
115
120
 
@@ -14,7 +14,7 @@ $iui-after-border: 5px solid;
14
14
 
15
15
  > .iui-select-button {
16
16
  @include iui-input;
17
- @include iui-focus;
17
+ @include iui-focus($offset: -2px, $thickness: 2px);
18
18
  display: flex;
19
19
  align-items: center;
20
20
  min-height: $iui-component-height;
@@ -100,15 +100,7 @@
100
100
 
101
101
  &,
102
102
  &:hover,
103
- &[disabled],
104
- &:focus {
105
- @include themed {
106
- border-color: t(iui-color-background-5);
107
- }
108
- }
109
-
110
- // Overriding border from default button
111
- &:focus:not(:focus-visible) {
103
+ &[disabled] {
112
104
  @include themed {
113
105
  border-color: t(iui-color-background-5);
114
106
  }
@@ -130,19 +122,6 @@
130
122
  @include themed {
131
123
  box-shadow: inset $iui-xxs 0 0 0 t(iui-icons-color-primary);
132
124
  }
133
-
134
- &:focus {
135
- @include themed {
136
- box-shadow: inset 0 0 $iui-xs rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-3)),
137
- inset $iui-xxs 0 0 0 t(iui-icons-color-primary);
138
- }
139
- }
140
-
141
- &:focus:not(:focus-visible) {
142
- @include themed {
143
- box-shadow: inset $iui-xxs 0 0 0 t(iui-icons-color-primary);
144
- }
145
- }
146
125
  }
147
126
 
148
127
  &[disabled],
@@ -152,17 +131,6 @@
152
131
  }
153
132
  }
154
133
 
155
- &:focus {
156
- outline: 0;
157
- @include themed {
158
- box-shadow: inset 0 0 $iui-xs rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-3));
159
- }
160
- }
161
-
162
- &:focus:not(:focus-visible) {
163
- box-shadow: none;
164
- }
165
-
166
134
  &.iui-expand {
167
135
  height: $iui-line-height;
168
136
  justify-content: center;
@@ -68,6 +68,7 @@ $tick-height: $iui-baseline; // 11px
68
68
  ); // Adjust the left (set in code) by radius of thumb so thumb center is at value position
69
69
  z-index: 1;
70
70
  cursor: grab;
71
+ @include iui-focus($thickness: 2px);
71
72
  @include themed {
72
73
  background: t(iui-color-background-1);
73
74
  border: 1px solid t(iui-color-background-5);
@@ -76,8 +77,6 @@ $tick-height: $iui-baseline; // 11px
76
77
  &:active {
77
78
  cursor: grabbing;
78
79
  }
79
-
80
- @include iui-focus();
81
80
  }
82
81
 
83
82
  @mixin iui-slider-track {