@itwin/itwinui-css 0.54.0 → 0.56.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.
@@ -7,8 +7,8 @@
7
7
  @mixin iui-popover {
8
8
  &.tippy-box {
9
9
  &[data-reference-hidden] {
10
- visibility: visible;
11
- pointer-events: auto;
10
+ visibility: hidden;
11
+ pointer-events: none;
12
12
  }
13
13
 
14
14
  // Resets tippy.js default stylings that interfere with our own
@@ -0,0 +1,31 @@
1
+ // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
+ // See LICENSE.md in the project root for license terms and full copyright notice.
3
+ @import './index';
4
+
5
+ .iui-radio-tile {
6
+ @include iui-radio-tile;
7
+ }
8
+
9
+ .iui-radio-tile-content {
10
+ @include iui-radio-tile-content;
11
+ }
12
+
13
+ .iui-radio-tile-container {
14
+ @include iui-radio-tile-container;
15
+ }
16
+
17
+ .iui-radio-tile-input {
18
+ @include iui-radio-tile-input;
19
+ }
20
+
21
+ .iui-radio-tile-icon {
22
+ @include iui-radio-tile-icon;
23
+ }
24
+
25
+ .iui-radio-tile-label {
26
+ @include iui-radio-tile-label;
27
+ }
28
+
29
+ .iui-radio-tile-sublabel {
30
+ @include iui-radio-tile-sublabel;
31
+ }
@@ -0,0 +1,3 @@
1
+ // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
+ // See LICENSE.md in the project root for license terms and full copyright notice.
3
+ @import './radio-tile';
@@ -0,0 +1,214 @@
1
+ // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
+ // See LICENSE.md in the project root for license terms and full copyright notice.
3
+ @import '../style/index';
4
+ @import '../icon/index';
5
+
6
+ @mixin iui-radio-tile {
7
+ cursor: pointer;
8
+ @include themed {
9
+ -webkit-tap-highlight-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
10
+ }
11
+
12
+ &:first-of-type > .iui-radio-tile-content {
13
+ border-radius: $iui-border-radius 0 0 $iui-border-radius;
14
+ }
15
+
16
+ &:last-of-type > .iui-radio-tile-content {
17
+ border-radius: 0 $iui-border-radius $iui-border-radius 0;
18
+ }
19
+
20
+ &:not(:first-of-type) > .iui-radio-tile-content {
21
+ margin-left: -1px;
22
+ }
23
+ }
24
+ @mixin iui-radio-tile-content {
25
+ width: $iui-xl * 5;
26
+ height: 100%;
27
+ box-sizing: border-box;
28
+ padding: $iui-s;
29
+ position: relative;
30
+ z-index: 1;
31
+ @media (prefers-reduced-motion: no-preference) {
32
+ transition: border-color $iui-speed-fast ease-out;
33
+ }
34
+ @include themed {
35
+ border: 1px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
36
+ background-color: t(iui-color-background-1);
37
+ }
38
+
39
+ &:hover {
40
+ z-index: 2;
41
+ @include themed {
42
+ border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-2));
43
+ }
44
+
45
+ svg {
46
+ @media (forced-colors: active) {
47
+ fill: CanvasText;
48
+ }
49
+ @include themed {
50
+ fill: t(iui-icons-color-actionable);
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ @mixin iui-radio-tile-container {
57
+ display: inline-flex;
58
+ flex-wrap: wrap;
59
+ user-select: none;
60
+ // Create stacking context
61
+ position: relative;
62
+ z-index: 0;
63
+ }
64
+
65
+ @mixin iui-radio-tile-input {
66
+ width: 0;
67
+ height: 0;
68
+ appearance: none;
69
+ opacity: 0;
70
+ position: absolute;
71
+ @include focus-visible {
72
+ + * {
73
+ outline-offset: -4px;
74
+ @media (forced-colors: active) {
75
+ outline-color: Highlight;
76
+ }
77
+ @include themed {
78
+ outline: 2px solid t(iui-color-foreground-primary);
79
+ }
80
+ }
81
+ }
82
+
83
+ &:checked + * {
84
+ padding: $iui-s - 1;
85
+ z-index: 3;
86
+ @media (forced-colors: active) {
87
+ border-color: Highlight;
88
+ }
89
+ @include themed {
90
+ border: 2px solid t(iui-color-foreground-primary);
91
+ }
92
+
93
+ svg {
94
+ @media (forced-colors: active) {
95
+ fill: Highlight;
96
+ }
97
+ @include themed {
98
+ fill: t(iui-icons-color-primary);
99
+ }
100
+ }
101
+
102
+ &::after {
103
+ content: '';
104
+ width: $iui-icons-default;
105
+ height: $iui-icons-default;
106
+ position: absolute;
107
+ top: $iui-s;
108
+ right: $iui-s;
109
+ mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M6,14L0,8l2-2l4,4l8-8l2,2L6,14z" /></svg>');
110
+ @media (forced-colors: active) {
111
+ background-color: Highlight;
112
+ }
113
+ @include themed {
114
+ background-color: t(iui-color-foreground-primary);
115
+ }
116
+ }
117
+ }
118
+
119
+ &:disabled + * {
120
+ cursor: not-allowed;
121
+ z-index: 0;
122
+ @include themed {
123
+ border-color: t(iui-color-background-disabled);
124
+ background-color: t(iui-color-background-disabled);
125
+ }
126
+
127
+ &::after {
128
+ @media (forced-colors: active) {
129
+ background-color: GrayText;
130
+ }
131
+ @include themed {
132
+ background-color: t(iui-icons-color-actionable-disabled);
133
+ }
134
+ }
135
+
136
+ svg {
137
+ @media (forced-colors: active) {
138
+ fill: GrayText;
139
+ }
140
+ @include themed {
141
+ fill: t(iui-icons-color-actionable-disabled);
142
+ }
143
+ }
144
+
145
+ .iui-radio-tile-icon {
146
+ filter: $iui-icons-color-multicolor-disabled;
147
+ }
148
+
149
+ .iui-radio-tile-label,
150
+ .iui-radio-tile-sublabel {
151
+ @media (forced-colors: active) {
152
+ color: GrayText;
153
+ }
154
+ }
155
+
156
+ .iui-radio-tile-label {
157
+ @include themed {
158
+ color: t(iui-text-color-muted);
159
+ }
160
+ }
161
+ }
162
+
163
+ &:disabled:checked + * {
164
+ z-index: 3;
165
+ @media (forced-colors: active) {
166
+ border-color: GrayText;
167
+ }
168
+ @include themed {
169
+ border: 2px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
170
+ }
171
+ }
172
+ }
173
+
174
+ @mixin iui-radio-tile-icon {
175
+ width: $iui-icons-xl;
176
+ height: $iui-icons-xl;
177
+ display: block;
178
+ margin: 0 auto;
179
+ padding-top: round($iui-baseline * 0.5);
180
+ padding-bottom: $iui-baseline;
181
+
182
+ svg {
183
+ @media (prefers-reduced-motion: no-preference) {
184
+ transition: fill $iui-speed-fast ease-out;
185
+ }
186
+ @media (forced-colors: active) {
187
+ fill: CanvasText;
188
+ }
189
+ @include themed {
190
+ fill: t(iui-icons-color);
191
+ }
192
+ }
193
+ }
194
+
195
+ @mixin iui-radio-tile-label {
196
+ font-size: $iui-font-size;
197
+ font-weight: $iui-font-weight-semibold;
198
+ line-height: $iui-line-height;
199
+ text-align: center;
200
+ word-break: break-word;
201
+ @include themed {
202
+ color: t(iui-text-color);
203
+ }
204
+ }
205
+
206
+ @mixin iui-radio-tile-sublabel {
207
+ font-size: $iui-font-size-small;
208
+ line-height: round($iui-baseline * 1.375);
209
+ text-align: center;
210
+ word-break: break-word;
211
+ @include themed {
212
+ color: t(iui-text-color-muted);
213
+ }
214
+ }
@@ -0,0 +1,79 @@
1
+ // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
+ // See LICENSE.md in the project root for license terms and full copyright notice.
3
+ @import './index';
4
+
5
+ @mixin iui-anchor {
6
+ --_iui-anchor-external-svg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m16 0v5.4l-1.9-2-8.4 8.4-1.5-1.5 8.3-8.4-1.9-1.9m5.4 16v-9h-1v8h-14v-14h8v-1h-9v16z' /></svg>");
7
+
8
+ @include iui-anchor-status('primary');
9
+ border-radius: $iui-border-radius;
10
+ cursor: pointer;
11
+
12
+ &-external::after {
13
+ content: '';
14
+ display: inline-block;
15
+ width: 1.5ch;
16
+ height: 1.5ch;
17
+ margin-left: 0.5ch;
18
+ vertical-align: -0.1ch;
19
+ background-color: currentColor;
20
+ mask: var(--_iui-anchor-external-svg);
21
+ @media (forced-colors: active) {
22
+ background-color: LinkText;
23
+ }
24
+ }
25
+
26
+ @include iui-anchor-underline('on-hover');
27
+
28
+ @media (prefers-contrast: more) {
29
+ @include iui-anchor-underline('on-initial');
30
+ }
31
+
32
+ @at-root {
33
+ .iui-theme-light &,
34
+ .iui-theme-dark & {
35
+ @include iui-anchor-underline('on-hover');
36
+ }
37
+ }
38
+
39
+ @at-root {
40
+ .iui-theme-light-hc &,
41
+ .iui-theme-dark-hc & {
42
+ @include iui-anchor-underline('on-initial');
43
+ }
44
+ }
45
+ }
46
+
47
+ @mixin iui-anchor-status($status: primary) {
48
+ @include iui-focus($color: var(--iui-color-foreground-#{$status}), $offset: 1px);
49
+ @include themed {
50
+ color: t(iui-color-foreground-#{$status});
51
+ -webkit-tap-highlight-color: rgba(t(iui-color-foreground-#{$status}-rgb), t(iui-opacity-5));
52
+ }
53
+ @if $status != primary {
54
+ @include iui-text-selection($status);
55
+ }
56
+
57
+ &:hover {
58
+ @include themed {
59
+ color: t(iui-color-foreground-#{$status}-overlay);
60
+ }
61
+ }
62
+ }
63
+
64
+ /// $behavior should be one of: 'on-hover' or 'on-initial'
65
+ @mixin iui-anchor-underline($behavior: 'on-hover') {
66
+ @if $behavior == 'on-hover' {
67
+ text-decoration: none;
68
+
69
+ &:hover {
70
+ text-decoration: underline;
71
+ }
72
+ } @else {
73
+ text-decoration: underline;
74
+
75
+ &:hover {
76
+ text-decoration: none;
77
+ }
78
+ }
79
+ }
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
2
  // See LICENSE.md in the project root for license terms and full copyright notice.
3
3
  @import './index';
4
+ @import './anchor';
4
5
 
5
6
  html {
6
7
  @include theme-variables(light);
@@ -51,6 +52,14 @@ html {
51
52
  }
52
53
  }
53
54
 
55
+ .iui-anchor {
56
+ @include iui-anchor;
57
+ }
58
+
59
+ .iui-visually-hidden {
60
+ @include visually-hidden;
61
+ }
62
+
54
63
  [class*='iui-'],
55
64
  [class*='iui-'] * {
56
65
  // Text highlight
@@ -34,6 +34,12 @@
34
34
  fill: t(iui-icons-color-primary);
35
35
  }
36
36
  }
37
+
38
+ .iui-tab-description {
39
+ @include themed {
40
+ opacity: t(iui-opacity-1);
41
+ }
42
+ }
37
43
  }
38
44
 
39
45
  &[disabled] {
@@ -7,8 +7,21 @@
7
7
  @include iui-tag;
8
8
  }
9
9
 
10
- a.iui-tag {
10
+ .iui-tag-basic {
11
+ @include iui-tag-basic;
12
+ }
13
+
14
+ .iui-tag-label {
15
+ @include iui-tag-label;
16
+ }
17
+
18
+ .iui-tag-button {
19
+ @include iui-tag-button;
20
+ }
21
+
22
+ a.iui-tag-basic {
11
23
  @include iui-anchor;
24
+ @include iui-focus($offset: 1px);
12
25
  }
13
26
 
14
27
  .iui-tag-container {
package/scss/tag/tag.scss CHANGED
@@ -1,67 +1,66 @@
1
1
  // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
2
  // See LICENSE.md in the project root for license terms and full copyright notice.
3
3
  @import '../style/index';
4
- @import '../icon/index';
5
4
  @import '../text/mixins';
5
+ @import '../button/index';
6
6
 
7
- @mixin iui-tag {
7
+ @mixin iui-tag-base {
8
8
  @include iui-reset;
9
- @include iui-focus($offset: -2px, $thickness: 2px);
10
9
  user-select: all;
11
10
  text-transform: lowercase;
12
11
  display: inline-flex;
12
+ }
13
+
14
+ @mixin iui-tag-basic {
15
+ @include iui-tag-base;
13
16
 
14
17
  &:not(a) {
15
18
  @include themed {
16
19
  color: t(iui-text-color-muted);
17
20
  }
18
21
  }
22
+ }
19
23
 
20
- &:not(.iui-basic) {
21
- height: $iui-baseline * 3;
22
- margin: $iui-component-offset 0;
23
- border-radius: ($iui-baseline * 3) * 0.5;
24
- box-sizing: border-box;
25
- padding: 0 $iui-xxs;
26
- align-items: center;
27
- @media (prefers-reduced-motion: no-preference) {
28
- transition: border $iui-speed-fast ease-out;
29
- }
30
- font-size: $iui-font-size;
31
- text-transform: none;
32
- cursor: default;
33
- @include themed {
34
- border: 1px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
35
- background-color: t(iui-color-background-1);
36
- color: t(iui-text-color);
37
- }
38
-
39
- > .iui-label {
40
- @include iui-text;
41
- white-space: nowrap;
42
- text-overflow: ellipsis;
43
- overflow: hidden;
44
- margin: 0 $iui-xs 0 $iui-s;
24
+ @mixin iui-tag {
25
+ @include iui-tag-base;
26
+ height: $iui-baseline * 3;
27
+ margin: $iui-component-offset 0;
28
+ border-radius: $iui-border-radius-round;
29
+ box-sizing: border-box;
30
+ padding: 0 $iui-xxs;
31
+ align-items: center;
32
+ transition: border-color $iui-speed-fast ease-out;
33
+ font-size: $iui-font-size;
34
+ text-transform: none;
35
+ cursor: default;
36
+ -webkit-tap-highlight-color: transparent;
37
+ @include themed {
38
+ border: 1px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-4));
39
+ background-color: t(iui-color-background-1);
40
+ color: t(iui-text-color);
41
+ }
45
42
 
46
- &:only-child {
47
- margin: 0 $iui-s;
48
- }
43
+ &:hover {
44
+ @include themed {
45
+ border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-1));
49
46
  }
47
+ }
48
+ }
50
49
 
51
- > .iui-button {
52
- border-radius: 50%;
53
- }
50
+ @mixin iui-tag-label {
51
+ @include iui-text;
52
+ white-space: nowrap;
53
+ text-overflow: ellipsis;
54
+ overflow: hidden;
55
+ margin: 0 $iui-xs 0 $iui-s;
54
56
 
55
- &:hover {
56
- @include themed {
57
- border-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-1));
58
- }
59
- }
57
+ &:only-child {
58
+ margin: 0 $iui-s;
60
59
  }
60
+ }
61
61
 
62
- &.iui-basic {
63
- outline-offset: 1px;
64
- }
62
+ @mixin iui-tag-button {
63
+ border-radius: 50%;
65
64
  }
66
65
 
67
66
  @mixin iui-tag-container {
@@ -69,15 +68,15 @@
69
68
  color: t(iui-text-color-muted);
70
69
  }
71
70
 
72
- > a.iui-basic {
71
+ > a.iui-tag-basic {
73
72
  margin: $iui-xxs;
74
73
  }
75
74
 
76
- > .iui-tag:not(:last-child) {
75
+ > *:not(last-child) {
77
76
  margin-right: $iui-xs;
78
77
  }
79
78
 
80
- > .iui-basic:not(:last-child)::after {
79
+ > .iui-tag-basic:not(:last-child)::after {
81
80
  content: ',';
82
81
  }
83
82
 
@@ -94,7 +93,7 @@
94
93
  border-radius: $iui-border-radius;
95
94
  padding: $iui-component-offset $iui-sm;
96
95
  @include themed {
97
- background-color: t(iui-color-background-2);
96
+ background-color: t(iui-color-background-3);
98
97
  }
99
98
  }
100
99
  }
@@ -7,17 +7,23 @@
7
7
  user-select: none;
8
8
  color: transparent;
9
9
  border-radius: $iui-border-radius;
10
+ cursor: progress;
10
11
 
11
12
  @include themed {
12
13
  background: linear-gradient(
13
- 270deg,
14
- t(iui-color-background-3),
15
- t(iui-color-background-3),
16
- t(iui-color-background-2),
17
- t(iui-color-background-3),
18
- t(iui-color-background-3)
14
+ 292deg,
15
+ t(iui-text-color-muted),
16
+ t(iui-text-color-muted),
17
+ t(iui-text-color-placeholder),
18
+ t(iui-text-color-muted),
19
+ t(iui-text-color-muted)
19
20
  );
20
- background-size: 200% 100%;
21
+ }
22
+ background-size: 200% 100%;
23
+
24
+ @media (forced-colors: active) {
25
+ forced-color-adjust: none;
26
+ background: linear-gradient(292deg, CanvasText, CanvasText, Canvas, CanvasText, CanvasText);
21
27
  }
22
28
 
23
29
  @media (prefers-reduced-motion: no-preference) {
@@ -1,21 +1,17 @@
1
1
  // Copyright (c) Bentley Systems, Incorporated. All rights reserved.
2
2
  // See LICENSE.md in the project root for license terms and full copyright notice.
3
3
  @import '../style/index';
4
- @import '../icon/index';
5
4
  @import '../button/index';
5
+ @import '../icon/index';
6
+ @import '../surface/index';
6
7
 
7
8
  @mixin iui-tile {
8
9
  @include iui-reset;
10
+ @include iui-surface;
9
11
  display: inline-flex;
10
12
  flex-direction: column;
11
13
  width: $iui-3xl * 3;
12
- box-shadow: $iui-elevation-2;
13
14
  backface-visibility: hidden;
14
- @include iui-focus($offset: $iui-xxs, $thickness: $iui-xxs);
15
- @include themed() {
16
- background-color: t(iui-color-background-1);
17
- color: t(iui-text-color);
18
- }
19
15
 
20
16
  &:hover,
21
17
  &:focus-within {
@@ -27,10 +23,6 @@
27
23
  .iui-tile-metadata:not(:last-child) {
28
24
  width: calc(100% - #{$iui-xl});
29
25
  }
30
-
31
- .iui-tile-thumbnail-picture {
32
- transform: translateZ(0) scale(1.1);
33
- }
34
26
  }
35
27
 
36
28
  &.iui-new {
@@ -50,9 +42,23 @@
50
42
  ),
51
43
  linear-gradient(t(iui-color-background-1), t(iui-color-background-1));
52
44
  }
45
+ }
46
+
47
+ &.iui-actionable {
48
+ @include iui-focus($offset: $iui-xxs, $thickness: $iui-xxs);
49
+ cursor: pointer;
50
+ transition: box-shadow $iui-speed-fast ease-in-out;
51
+
52
+ &:hover {
53
+ box-shadow: $iui-elevation-8;
54
+ }
53
55
 
54
- .iui-tile-thumbnail-picture {
55
- transform: translateZ(0) scale(1.1);
56
+ &:hover,
57
+ &:focus-within,
58
+ &.iui-selected {
59
+ .iui-tile-thumbnail-picture {
60
+ transform: translateZ(0) scale(1.1);
61
+ }
56
62
  }
57
63
  }
58
64
 
@@ -17,7 +17,7 @@
17
17
  align-items: center;
18
18
  flex-direction: column;
19
19
  justify-content: center;
20
- z-index: 1070;
20
+ z-index: 99999;
21
21
 
22
22
  @media screen and (max-width: 400px) {
23
23
  width: calc(100vw - 36px);