@itwin/itwinui-css 0.50.1 → 0.53.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 (89) hide show
  1. package/css/alert.css +234 -176
  2. package/css/all.css +8324 -5880
  3. package/css/badge.css +3 -2
  4. package/css/blockquote.css +12 -9
  5. package/css/breadcrumbs.css +110 -87
  6. package/css/button.css +441 -345
  7. package/css/carousel.css +110 -91
  8. package/css/code.css +70 -57
  9. package/css/color-picker.css +164 -113
  10. package/css/date-picker.css +454 -80
  11. package/css/expandable-block.css +213 -161
  12. package/css/fieldset.css +25 -21
  13. package/css/file-upload.css +93 -79
  14. package/css/footer.css +64 -53
  15. package/css/global.css +550 -197
  16. package/css/header.css +485 -367
  17. package/css/icon.css +108 -78
  18. package/css/information-panel.css +181 -137
  19. package/css/inputs.css +1137 -945
  20. package/css/keyboard.css +14 -10
  21. package/css/location-marker.css +69 -59
  22. package/css/menu.css +124 -86
  23. package/css/modal.css +114 -44
  24. package/css/non-ideal-state.css +47 -40
  25. package/css/notification-marker.css +275 -200
  26. package/css/popover.css +10 -8
  27. package/css/progress-indicator.css +316 -238
  28. package/css/reset-global-styles.css +10 -5
  29. package/css/side-navigation.css +193 -144
  30. package/css/skip-to-content.css +42 -28
  31. package/css/slider.css +116 -91
  32. package/css/surface.css +19 -0
  33. package/css/table.css +578 -430
  34. package/css/tabs.css +324 -238
  35. package/css/tag.css +112 -85
  36. package/css/text.css +47 -28
  37. package/css/tile.css +389 -313
  38. package/css/time-picker.css +114 -87
  39. package/css/toast-notification.css +234 -175
  40. package/css/toggle-switch.css +176 -111
  41. package/css/tooltip.css +24 -17
  42. package/css/tree.css +123 -93
  43. package/css/user-icon.css +222 -162
  44. package/css/wizard.css +158 -133
  45. package/package.json +5 -6
  46. package/scss/alert/alert.scss +1 -5
  47. package/scss/carousel/carousel.scss +24 -27
  48. package/scss/classes.scss +1 -0
  49. package/scss/code/codeblock.scss +1 -1
  50. package/scss/color-picker/color-picker.scss +2 -2
  51. package/scss/date-picker/classes.scss +20 -0
  52. package/scss/date-picker/date-picker.scss +194 -33
  53. package/scss/fieldset/fieldset.scss +1 -1
  54. package/scss/header/header.scss +15 -10
  55. package/scss/index.scss +1 -0
  56. package/scss/information-panel/information-panel.scss +10 -3
  57. package/scss/inputs/checkbox.scss +1 -0
  58. package/scss/inputs/labeled-inputs.scss +8 -8
  59. package/scss/inputs/radio.scss +0 -4
  60. package/scss/location-marker/data-rich.scss +1 -1
  61. package/scss/location-marker/me.scss +4 -4
  62. package/scss/menu/classes.scss +2 -1
  63. package/scss/menu/menu.scss +8 -11
  64. package/scss/modal/classes.scss +4 -0
  65. package/scss/modal/modal.scss +82 -7
  66. package/scss/popover/popover.scss +1 -2
  67. package/scss/progress-indicator/linear.scss +3 -11
  68. package/scss/progress-indicator/radial.scss +1 -1
  69. package/scss/side-navigation/side-navigation.scss +5 -5
  70. package/scss/slider/slider.scss +2 -2
  71. package/scss/style/elevation.scss +5 -5
  72. package/scss/style/global.scss +33 -26
  73. package/scss/style/mixins.scss +9 -0
  74. package/scss/style/ripple.scss +1 -1
  75. package/scss/style/speed.scss +1 -0
  76. package/scss/style/theme.scss +248 -65
  77. package/scss/surface/classes.scss +7 -0
  78. package/scss/surface/index.scss +3 -0
  79. package/scss/surface/surface.scss +18 -0
  80. package/scss/table/column-filter.scss +2 -2
  81. package/scss/table/table.scss +26 -17
  82. package/scss/tile/tile.scss +5 -5
  83. package/scss/time-picker/time-picker.scss +2 -2
  84. package/scss/toast-notification/categories.scss +1 -5
  85. package/scss/toggle-switch/classes.scss +4 -0
  86. package/scss/toggle-switch/toggle-switch.scss +141 -162
  87. package/scss/tooltip/tooltip.scss +2 -1
  88. package/scss/user-icon/user-icon.scss +38 -19
  89. package/scss/wizard/wizard.scss +1 -1
@@ -2,17 +2,21 @@
2
2
  // See LICENSE.md in the project root for license terms and full copyright notice.
3
3
  @import '../style/index';
4
4
  @import '../icon/index';
5
- @import '../menu/index';
5
+ @import '../surface/index';
6
+
7
+ $iui-date-picker-cell-width: 40px;
8
+ $iui-date-picker-cell-height: 36px;
9
+ $iui-date-picker-today-circle-size: 32px;
6
10
 
7
11
  @mixin iui-date-picker {
8
- @include iui-dropdown;
9
- box-shadow: $iui-elevation-2;
12
+ @include iui-surface;
10
13
  user-select: none;
11
- text-align: center;
12
- height: $iui-baseline * 26;
13
- display: inline-flex;
14
- @include themed {
15
- background-color: t(iui-color-background-1);
14
+ display: grid;
15
+ grid-template-columns: 1fr auto;
16
+
17
+ .iui-time-picker {
18
+ height: 0;
19
+ min-height: 100%;
16
20
  }
17
21
  }
18
22
 
@@ -24,12 +28,9 @@
24
28
  padding: 0 $iui-xs;
25
29
  box-sizing: border-box;
26
30
  font-weight: $iui-font-weight-bold;
27
- @include themed {
28
- background-color: t(iui-color-background-1);
29
- }
31
+ gap: $iui-xs;
30
32
 
31
33
  > span {
32
- margin: 0 $iui-xs;
33
34
  width: 156px;
34
35
  white-space: nowrap;
35
36
  display: inline-flex;
@@ -49,10 +50,8 @@
49
50
  }
50
51
 
51
52
  @mixin iui-calendar-weekdays {
52
- line-height: $iui-baseline * 3;
53
+ line-height: $iui-date-picker-cell-height;
53
54
  display: flex;
54
- justify-content: space-evenly;
55
- align-items: center;
56
55
  padding: 0 $iui-s;
57
56
  font-weight: $iui-font-weight-bold;
58
57
  @include themed {
@@ -62,58 +61,220 @@
62
61
  > div {
63
62
  white-space: nowrap;
64
63
  overflow: hidden;
65
- width: $iui-xl;
64
+ width: $iui-date-picker-cell-width;
66
65
  text-align: center;
67
66
  }
68
67
  }
69
68
 
70
69
  @mixin iui-calendar-week {
71
70
  white-space: nowrap;
72
- height: $iui-baseline * 3;
71
+ line-height: $iui-date-picker-cell-height;
73
72
  display: flex;
74
- align-items: center;
75
- justify-content: space-evenly;
76
73
  padding: 0 $iui-s;
74
+ margin-bottom: $iui-xxs;
77
75
  }
78
76
 
79
- @mixin iui-calendar-day {
77
+ //#region Helper mixins
78
+ @mixin iui-calendar-day-base {
80
79
  @include iui-focus;
81
80
  cursor: pointer;
82
- display: inline-block;
83
- width: $iui-baseline * 3;
84
- line-height: $iui-baseline * 3;
81
+ text-align: center;
82
+ width: $iui-date-picker-cell-width;
83
+ height: $iui-date-picker-cell-height;
85
84
  border-radius: $iui-border-radius;
85
+ font-variant-numeric: tabular-nums;
86
+ }
86
87
 
87
- &.iui-today {
88
+ @mixin iui-calendar-day-base-hover {
89
+ &:hover {
88
90
  font-weight: $iui-font-weight-semibold;
89
- border-radius: 50%;
90
91
  @include themed {
91
- background-color: rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-6));
92
+ color: t(iui-color-foreground-primary);
93
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
94
+ }
95
+ }
96
+ }
97
+
98
+ @mixin iui-calendar-day-today-base {
99
+ position: relative;
100
+ font-weight: $iui-font-weight-semibold;
101
+
102
+ &::before {
103
+ content: '';
104
+ position: absolute;
105
+ display: block;
106
+ width: $iui-date-picker-today-circle-size;
107
+ height: $iui-date-picker-today-circle-size;
108
+ border-radius: $iui-border-radius-round;
109
+ box-sizing: border-box;
110
+ top: 50%;
111
+ left: 50%;
112
+ transform: translate(-50%, -50%);
113
+ @include themed {
114
+ border: 2px solid rgba(t(iui-color-foreground-body-rgb), t(iui-opacity-5));
92
115
  }
93
116
  }
94
117
 
95
118
  &:hover {
96
- font-weight: $iui-font-weight-semibold;
119
+ background-color: initial;
97
120
  @include themed {
98
121
  color: t(iui-color-foreground-primary);
122
+ }
123
+ }
124
+
125
+ &:hover::before {
126
+ @include themed {
99
127
  background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
100
128
  }
101
129
  }
130
+ }
102
131
 
103
- &.iui-selected {
104
- font-weight: $iui-font-weight-semibold;
105
- border-radius: $iui-border-radius;
106
- cursor: default;
132
+ @mixin iui-calendar-day-selected-base {
133
+ font-weight: $iui-font-weight-semibold;
134
+ @include themed {
135
+ background-color: t(iui-color-background-primary);
136
+ color: t(iui-color-foreground-accessory);
137
+ }
138
+ @include iui-focus($color: var(--iui-color-foreground-accessory), $offset: -3px);
139
+ }
140
+
141
+ @mixin iui-calendar-day-selected-today-base {
142
+ &:hover {
107
143
  @include themed {
108
144
  background-color: t(iui-color-background-primary);
109
145
  color: t(iui-color-foreground-accessory);
110
146
  }
111
- @include iui-focus($color: var(--iui-color-foreground-accessory), $offset: -3px);
147
+
148
+ &::before {
149
+ @include themed {
150
+ background-color: initial;
151
+ }
152
+ }
153
+ }
154
+
155
+ &::before {
156
+ @include themed {
157
+ border-color: rgba(t(iui-color-foreground-accessory-rgb), t(iui-opacity-4));
158
+ }
159
+ }
160
+ }
161
+ //#endregion Helper mixins
162
+
163
+ @mixin iui-calendar-day {
164
+ &,
165
+ &-today {
166
+ @include iui-calendar-day-base;
167
+ @include iui-calendar-day-base-hover;
168
+ }
169
+
170
+ &-today {
171
+ @include iui-calendar-day-today-base;
172
+ }
173
+ }
174
+
175
+ @mixin iui-calendar-day-selected {
176
+ &,
177
+ &-today {
178
+ @include iui-calendar-day-base;
179
+ @include iui-calendar-day-selected-base;
180
+ cursor: default;
181
+ }
182
+
183
+ &-today {
184
+ @include iui-calendar-day-today-base;
185
+ @include iui-calendar-day-selected-today-base;
186
+ }
187
+ }
188
+
189
+ @mixin iui-calendar-day-range-start {
190
+ &,
191
+ &-today {
192
+ @include iui-calendar-day-base;
193
+ @include iui-calendar-day-selected-base;
194
+
195
+ border-top-right-radius: 0;
196
+ border-bottom-right-radius: 0;
197
+ cursor: pointer;
198
+ }
199
+
200
+ &-today {
201
+ @include iui-calendar-day-today-base;
202
+ @include iui-calendar-day-selected-today-base;
203
+ }
204
+ }
205
+
206
+ @mixin iui-calendar-day-range-end {
207
+ &,
208
+ &-today {
209
+ @include iui-calendar-day-base;
210
+ @include iui-calendar-day-selected-base;
211
+
212
+ border-top-left-radius: 0;
213
+ border-bottom-left-radius: 0;
214
+ }
215
+
216
+ &-today {
217
+ @include iui-calendar-day-today-base;
218
+ @include iui-calendar-day-selected-today-base;
219
+ }
220
+ }
221
+
222
+ @mixin iui-calendar-day-range {
223
+ &,
224
+ &-today {
225
+ @include iui-calendar-day-base;
226
+
227
+ border-radius: 0;
228
+ @include themed {
229
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-5));
230
+ color: t(iui-text-color);
231
+ }
232
+
233
+ &:hover {
234
+ font-weight: $iui-font-weight-semibold;
235
+
236
+ @include themed {
237
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-4));
238
+ }
239
+ }
112
240
  }
113
241
 
114
- &.iui-outside-month {
242
+ &-today {
243
+ @include iui-calendar-day-today-base;
244
+
245
+ &:hover {
246
+ @include themed {
247
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-5));
248
+ color: t(iui-text-color);
249
+ }
250
+
251
+ &::before {
252
+ @include themed {
253
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-4));
254
+ }
255
+ }
256
+ }
257
+
258
+ &::before {
259
+ @include themed {
260
+ border-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-4));
261
+ }
262
+ }
263
+ }
264
+ }
265
+
266
+ @mixin iui-calendar-day-outside-month {
267
+ &,
268
+ &-today {
269
+ @include iui-calendar-day-base;
270
+ @include iui-calendar-day-base-hover;
271
+
115
272
  @include themed {
116
273
  color: t(iui-text-color-muted);
117
274
  }
118
275
  }
276
+
277
+ &-today {
278
+ @include iui-calendar-day-today-base;
279
+ }
119
280
  }
@@ -8,7 +8,7 @@
8
8
  padding: $iui-baseline $iui-sm;
9
9
  border-radius: $iui-border-radius;
10
10
  @include themed {
11
- border: 1px solid t(iui-color-background-4);
11
+ border: 1px solid t(iui-color-background-border);
12
12
  background-color: t(iui-color-background-1);
13
13
  }
14
14
 
@@ -21,7 +21,7 @@
21
21
  }
22
22
  @include themed {
23
23
  background-color: t(iui-color-background-1);
24
- border-bottom: $iui-xxs solid t(iui-color-background-5);
24
+ border-bottom: $iui-xxs solid t(iui-color-background-border);
25
25
  color: t(iui-text-color);
26
26
  }
27
27
 
@@ -83,7 +83,7 @@
83
83
  width: 1px;
84
84
  height: $iui-baseline * 2;
85
85
  @include themed {
86
- background-color: t(iui-color-background-4);
86
+ background-color: t(iui-color-background-border);
87
87
  }
88
88
  }
89
89
 
@@ -252,15 +252,16 @@
252
252
  overflow: hidden;
253
253
  text-overflow: ellipsis;
254
254
  }
255
+ }
255
256
 
256
- .iui-description {
257
- height: $iui-baseline * 2;
258
- @media (prefers-reduced-motion: no-preference) {
259
- transition: all $iui-speed-fast ease;
260
- }
261
- @include themed {
262
- opacity: t(iui-opacity-3);
263
- }
257
+ .iui-description {
258
+ height: $iui-baseline * 2;
259
+ font-size: $iui-font-size-small;
260
+ @media (prefers-reduced-motion: no-preference) {
261
+ transition: all $iui-speed-fast ease;
262
+ }
263
+ @include themed {
264
+ opacity: t(iui-opacity-3);
264
265
  }
265
266
  }
266
267
 
@@ -378,6 +379,10 @@
378
379
  }
379
380
  }
380
381
 
382
+ .iui-description {
383
+ opacity: 1;
384
+ }
385
+
381
386
  &,
382
387
  &:hover {
383
388
  // Blue background and darker blue bottom line
package/scss/index.scss CHANGED
@@ -40,3 +40,4 @@
40
40
  @import './user-icon/index';
41
41
  @import './wizard/index';
42
42
  @import './skip-to-content/index';
43
+ @import './surface/index';
@@ -11,6 +11,7 @@
11
11
  @mixin iui-information-panel {
12
12
  position: absolute;
13
13
  opacity: 0;
14
+ visibility: hidden;
14
15
  display: flex;
15
16
  flex-direction: column;
16
17
  box-sizing: border-box;
@@ -18,7 +19,8 @@
18
19
  max-height: 100%;
19
20
  z-index: 2; // Needs to be higher than table's column resizers.
20
21
  @media (prefers-reduced-motion: no-preference) {
21
- transition: transform $iui-speed-fast ease-out, opacity $iui-speed-fast ease;
22
+ transition: visibility $iui-speed-instant $iui-speed-fast ease-in, transform $iui-speed-fast ease-out,
23
+ opacity $iui-speed-fast ease;
22
24
  }
23
25
 
24
26
  @include themed {
@@ -32,7 +34,7 @@
32
34
 
33
35
  > .iui-resizer-bar {
34
36
  @include themed {
35
- background-color: t(iui-color-background-5);
37
+ background-color: t(iui-color-background-border);
36
38
  }
37
39
  }
38
40
 
@@ -100,7 +102,7 @@
100
102
 
101
103
  > hr {
102
104
  @include themed {
103
- border-color: t(iui-color-background-4);
105
+ border-color: t(iui-color-background-border);
104
106
  }
105
107
  }
106
108
  }
@@ -108,8 +110,13 @@
108
110
 
109
111
  @mixin iui-information-panel-visible {
110
112
  opacity: 1;
113
+ visibility: visible;
111
114
  transform: translate(0);
112
115
 
116
+ @media (prefers-reduced-motion: no-preference) {
117
+ transition: transform $iui-speed-fast ease-out, opacity $iui-speed-fast ease;
118
+ }
119
+
113
120
  > .iui-resizer {
114
121
  display: flex;
115
122
  }
@@ -24,6 +24,7 @@
24
24
  position: relative;
25
25
  border-radius: $iui-border-radius;
26
26
  background-color: var(--_iui-checkbox-background-color);
27
+ flex-shrink: 0;
27
28
  cursor: pointer;
28
29
 
29
30
  &::before {
@@ -55,6 +55,10 @@
55
55
  // stylelint-enable
56
56
  }
57
57
 
58
+ .iui-input-group .iui-toggle-switch-wrapper {
59
+ padding: round($iui-baseline * 0.5) 0;
60
+ }
61
+
58
62
  // #region Cursors
59
63
  @include iui-input-label-cursor;
60
64
 
@@ -124,9 +128,9 @@
124
128
  display: flex;
125
129
  gap: $iui-m;
126
130
 
127
- > .iui-checkbox,
128
- > .iui-radio,
129
- > .iui-toggle-switch {
131
+ > .iui-checkbox-wrapper,
132
+ > .iui-radio-wrapper,
133
+ > .iui-toggle-switch-wrapper {
130
134
  margin-right: $iui-m;
131
135
 
132
136
  @supports (gap: $iui-m) {
@@ -300,11 +304,7 @@
300
304
  /// @arg iconSelector - selector to apply status fill on. Defaults to .iui-input-icon
301
305
  /// @arg textSelector - selector to apply text color on. Defaults to .iui-message
302
306
  @mixin iui-input-status($status, $iconSelector: '.iui-input-icon', $textSelector: '.iui-message') {
303
- *::selection {
304
- @include themed {
305
- background-color: rgba(t(iui-color-foreground-#{$status}-rgb), t(iui-opacity-4));
306
- }
307
- }
307
+ @include iui-text-selection($status);
308
308
 
309
309
  #{$iconSelector} {
310
310
  @include themed {
@@ -3,10 +3,6 @@
3
3
  @import '../style/index';
4
4
 
5
5
  @mixin iui-radio {
6
- &-wrapper {
7
- @include iui-inputs-checkbox-radio;
8
- }
9
-
10
6
  @include iui-checkbox;
11
7
 
12
8
  border-radius: 50%;
@@ -12,7 +12,7 @@
12
12
  border-radius: $iui-border-radius;
13
13
  text-align: center;
14
14
  font-size: $iui-font-size-leading;
15
- padding: round($iui-baseline/4) $iui-s;
15
+ padding: round($iui-baseline * 0.25) $iui-s;
16
16
  filter: drop-shadow($iui-elevation-2);
17
17
  box-sizing: border-box;
18
18
  position: relative;
@@ -20,11 +20,11 @@
20
20
  }
21
21
 
22
22
  > .iui-location-marker-me-dot {
23
- width: $iui-icons-large/2;
24
- height: $iui-icons-large/2;
23
+ width: $iui-icons-large * 0.5;
24
+ height: $iui-icons-large * 0.5;
25
25
  position: absolute;
26
- top: $iui-icons-large/4;
27
- left: $iui-icons-large/4;
26
+ top: $iui-icons-large * 0.25;
27
+ left: $iui-icons-large * 0.25;
28
28
  border-radius: 50%;
29
29
  box-sizing: border-box;
30
30
 
@@ -1,9 +1,10 @@
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 '../surface/index';
4
5
 
5
6
  .iui-menu {
6
- @include iui-dropdown;
7
+ @include iui-surface;
7
8
  @include iui-list-menu;
8
9
  }
9
10
 
@@ -5,16 +5,8 @@
5
5
 
6
6
  $iui-active-outline: thin solid t(iui-color-foreground-primary);
7
7
 
8
- @mixin iui-dropdown {
9
- @include iui-reset;
10
- box-shadow: $iui-elevation-2;
11
- @include themed {
12
- background-color: t(iui-color-background-1);
13
- color: t(iui-text-color);
14
- }
15
- }
16
-
17
8
  @mixin iui-list-menu {
9
+ @include iui-reset;
18
10
  list-style-type: none;
19
11
  user-select: none;
20
12
  width: 100%;
@@ -111,12 +103,17 @@ $iui-active-outline: thin solid t(iui-color-foreground-primary);
111
103
  &,
112
104
  &:hover {
113
105
  @include themed {
114
- background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-5));
106
+ background-color: rgba(t(iui-color-foreground-primary-rgb), t(iui-opacity-6));
107
+ color: t(iui-color-foreground-primary);
115
108
  outline: $iui-active-outline;
116
109
  outline-offset: -1px;
117
110
  }
118
111
  }
119
112
 
113
+ .iui-menu-description {
114
+ opacity: 1;
115
+ }
116
+
120
117
  > .iui-icon {
121
118
  @include themed {
122
119
  fill: t(iui-icons-color-primary);
@@ -163,7 +160,7 @@ $iui-active-outline: thin solid t(iui-color-foreground-primary);
163
160
  width: calc(100% - #{$iui-l});
164
161
  margin: 1px auto;
165
162
  @include themed {
166
- background-color: t(iui-color-background-4);
163
+ background-color: t(iui-color-background-border);
167
164
  }
168
165
  }
169
166
 
@@ -4,4 +4,8 @@
4
4
 
5
5
  .iui-modal {
6
6
  @include iui-modal;
7
+
8
+ &-full-page {
9
+ @include iui-modal-full-page;
10
+ }
7
11
  }
@@ -11,15 +11,37 @@
11
11
  left: 0;
12
12
  width: 100%;
13
13
  height: 100%;
14
+ @include themed {
15
+ background-color: rgba(0, 0, 0, t(iui-opacity-4));
16
+ }
17
+
18
+ // #region Small Modal Animations for CSS
14
19
  visibility: hidden;
15
20
  opacity: 0;
16
21
  @media (prefers-reduced-motion: no-preference) {
17
- transition: visibility 0s linear $iui-speed-fast, opacity $iui-speed-fast ease-out;
22
+ transition: visibility $iui-speed-instant linear $iui-speed-fast, opacity $iui-speed-fast ease-out;
18
23
  }
19
- @include themed {
20
- background-color: rgba(0, 0, 0, t(iui-opacity-4));
24
+
25
+ &.iui-modal-visible {
26
+ visibility: visible;
27
+ opacity: 1;
28
+ // remove delay for entry animation so it's instantly visible
29
+ transition-delay: $iui-speed-instant;
30
+ }
31
+ // #endregion Small Modal Animations for CSS
32
+
33
+ // #region Small Modal Animations for React
34
+ &.iui-modal-animation-enter {
35
+ visibility: hidden;
36
+ opacity: 0;
21
37
  }
22
38
 
39
+ &.iui-modal-animation-enter-active {
40
+ visibility: visible;
41
+ opacity: 1;
42
+ }
43
+ // #endregion Full Page Modal Animations for React
44
+
23
45
  > .iui-modal-dialog {
24
46
  position: absolute;
25
47
  left: 50%;
@@ -27,10 +49,12 @@
27
49
  transform: translate(-50%, -33%);
28
50
  z-index: 1000;
29
51
  max-width: 50%;
30
- min-width: 400px;
52
+ min-width: 380px;
53
+ max-height: 100vh;
31
54
  border-radius: $iui-border-radius;
32
55
  box-shadow: $iui-elevation-24;
33
56
  padding: $iui-baseline $iui-m;
57
+ box-sizing: border-box;
34
58
 
35
59
  @include themed {
36
60
  background-color: t(iui-color-background-1);
@@ -67,11 +91,62 @@
67
91
  margin-right: $iui-s;
68
92
  }
69
93
  }
94
+
95
+ .iui-modal-content {
96
+ flex-grow: 2;
97
+ margin: 0 -#{$iui-m};
98
+ padding: 0 $iui-m;
99
+ overflow-y: auto;
100
+ overflow-y: overlay;
101
+ }
70
102
  }
103
+ }
71
104
 
72
- &.iui-modal-visible {
73
- visibility: visible;
105
+ @mixin iui-modal-full-page {
106
+ > .iui-modal-dialog {
107
+ display: flex;
108
+ flex-direction: column;
109
+ height: 100vh;
110
+ width: 100vw;
111
+ left: 0;
112
+ top: 0;
113
+ transform: none;
114
+ max-width: initial;
115
+ min-width: initial;
116
+ border-radius: 0;
117
+ will-change: transform;
118
+ }
119
+
120
+ // #region Full Page Modal Animations for CSS
121
+ @media (prefers-reduced-motion: no-preference) {
122
+ transition: visibility $iui-speed-instant linear $iui-speed, opacity $iui-speed ease-out $iui-speed-fast;
123
+ }
124
+
125
+ > .iui-modal-dialog {
126
+ transform: translateY(100%);
127
+ @media (prefers-reduced-motion: no-preference) {
128
+ transition: visibility $iui-speed-instant linear $iui-speed, opacity $iui-speed-instant linear $iui-speed,
129
+ transform $iui-speed ease-in;
130
+ }
131
+ }
132
+
133
+ &.iui-modal-visible > .iui-modal-dialog {
134
+ transform: translateY(0);
135
+ @media (prefers-reduced-motion: no-preference) {
136
+ transition: transform $iui-speed ease-out;
137
+ }
138
+ }
139
+ // #endregion Full Page Modal Animations for CSS
140
+
141
+ // #region Full Page Modal Animations for React
142
+ &.iui-modal-animation-enter > .iui-modal-dialog {
143
+ transform: translateY(100%);
144
+ opacity: 0;
145
+ }
146
+
147
+ &.iui-modal-animation-enter-active > .iui-modal-dialog {
148
+ transform: translateY(0);
74
149
  opacity: 1;
75
- transition-delay: 0s;
76
150
  }
151
+ // #endregion Full Page Modal Animations for React
77
152
  }