@ilo-org/styles 0.10.0 → 0.10.2

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ilo-org/styles",
3
3
  "description": "Styles for products using ILO's Design System",
4
- "version": "0.10.0",
4
+ "version": "0.10.2",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/international-labour-organization/designsystem.git",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "@ilo-org/fonts": "0.1.0",
22
22
  "@ilo-org/icons": "0.2.1",
23
- "@ilo-org/themes": "0.5.0"
23
+ "@ilo-org/themes": "0.6.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "cssnano": "^5.1.13",
@@ -78,10 +78,14 @@
78
78
 
79
79
  &--list {
80
80
  order: 4;
81
+ display: flex;
82
+ flex-flow: column;
83
+ padding-top: px-to-rem($spacing-padding-1);
84
+ gap: px-to-rem($spacing-padding-1);
81
85
  }
82
86
 
83
87
  &--list-item {
84
- display: inline-block;
88
+ display: block;
85
89
  background-color: $color-formelements-uploadedfile-default-background;
86
90
  @include bordervalues("uploadedfile", "formelements", "default");
87
91
  box-sizing: border-box;
@@ -91,7 +95,6 @@
91
95
  height: px-to-rem(
92
96
  map-get($spacing, "formelements", "uploadedfile", "default", "height")
93
97
  );
94
- @include spacingvalues("margin", "uploadedfile", "formelements");
95
98
  outline: none;
96
99
  @include spacingvalues("padding", "uploadedfile", "formelements");
97
100
  }
@@ -16,7 +16,7 @@
16
16
  // Label is to the flex start of form element
17
17
  &__start {
18
18
  // Label
19
- :first-child {
19
+ #{$c}--label {
20
20
  grid-area: 1 / 1 / 2 / 2;
21
21
  }
22
22
 
@@ -26,12 +26,12 @@
26
26
  }
27
27
 
28
28
  // Helper
29
- :nth-child(3) {
29
+ #{$c}--helper {
30
30
  grid-area: 2 / 2 / 3 / 3;
31
31
  }
32
32
 
33
33
  // Upload
34
- :nth-child(4) {
34
+ [class*="file-upload--list"] {
35
35
  grid-area: 3 / 1 / 4 / 3;
36
36
  }
37
37
  }
@@ -39,7 +39,7 @@
39
39
  // Label is at the end of the form element
40
40
  &__end {
41
41
  // Label
42
- :first-child {
42
+ #{$c}--label {
43
43
  grid-area: 1 / 2 / 2 / 3;
44
44
  }
45
45
 
@@ -49,20 +49,20 @@
49
49
  }
50
50
 
51
51
  // Helper
52
- :nth-child(3) {
52
+ #{$c}--helper {
53
53
  grid-area: 2 / 1 / 3 / 3;
54
54
  }
55
55
 
56
56
  // Upload
57
- :nth-child(4) {
58
- grid-area: 3 / 1 / 4 / 3;
57
+ [class*="file-upload--list"] {
58
+ grid-area: 3 / 1 / 4 / 4;
59
59
  }
60
60
  }
61
61
 
62
62
  // Label is above form element
63
63
  &__top {
64
64
  // Label
65
- :first-child {
65
+ #{$c}--label {
66
66
  grid-area: 1 / 1 / 2 / 2;
67
67
  }
68
68
 
@@ -72,12 +72,12 @@
72
72
  }
73
73
 
74
74
  // Helper
75
- :nth-child(3) {
75
+ #{$c}--helper {
76
76
  grid-area: 3 / 1 / 4 / 2;
77
77
  }
78
78
 
79
79
  // Upload
80
- :nth-child(4) {
80
+ [class*="file-upload--list"] {
81
81
  grid-area: 4 / 1 / 5 / 2;
82
82
  }
83
83
  }
@@ -85,7 +85,7 @@
85
85
  // Label is below form element
86
86
  &__bottom {
87
87
  // Label
88
- :first-child {
88
+ #{$c}--label {
89
89
  grid-area: 3 / 1 / 4 / 2;
90
90
  }
91
91
 
@@ -95,12 +95,12 @@
95
95
  }
96
96
 
97
97
  // Helper
98
- :nth-child(3) {
98
+ #{$c}--helper {
99
99
  grid-area: 1 / 1 / 2 / 2;
100
100
  }
101
101
 
102
102
  // Upload
103
- :nth-child(4) {
103
+ [class*="file-upload--list"] {
104
104
  grid-area: 4 / 1 / 5 / 2;
105
105
  }
106
106
  }
@@ -2,29 +2,28 @@
2
2
  @use "../functions" as *;
3
3
  @import "../mixins";
4
4
 
5
- // @TODO: The grid layout is fairly clean until you get to the placement of the caption which breaks out of it
6
- // and uses a lot of absolute positioning. This should be cleaned up to use the grid layout more effectively.
7
-
8
5
  .hero {
9
6
  $c: &;
10
7
 
11
- // SASS vars are all constants
12
- $tooltip-width: 30px;
13
- $tooltip-height: 27px;
14
- $image-max-height: 216px;
15
- $corner-cut-sm: 39px;
16
- $corner-cut-lg: 64px;
8
+ // Offset from the edge of the window to keep content in the main content area
9
+ $base-offset: calc((100vw - #{$layout-max-width}) / 2);
10
+
11
+ // Card offset from the edge of the window minus the card's padding
12
+ $card-offset: calc(#{$base-offset} - #{$spacing-hero-card-padding-x-lg});
13
+
14
+ // Added offset for justified offset
15
+ $card-offset-justified: minmax(108px, #{$card-offset});
17
16
 
18
- // CSS vars can be changed
19
- --corner-cut-height: #{$corner-cut-sm};
17
+ // The height of the corner cut
18
+ --corner-cut-height: #{$spacing-hero-card-corner-cut-height-sm};
20
19
 
21
20
  width: 100%;
22
21
  display: grid;
23
22
  position: relative;
24
23
  grid-template-rows:
25
- minmax($image-max-height, 1fr)
26
- $tooltip-height
27
- $corner-cut-sm
24
+ minmax($spacing-hero-image-max-height, 1fr)
25
+ $spacing-hero-tooltip-height
26
+ $spacing-hero-card-corner-cut-height-sm
28
27
  auto;
29
28
  grid-template-columns: 1fr;
30
29
 
@@ -53,27 +52,30 @@
53
52
  grid-area: 2 / 1 / 3 / 2;
54
53
 
55
54
  &--wrapper {
56
- @include caption-icon-wrapper("right", $tooltip-width, $tooltip-height);
55
+ @include caption-icon-wrapper(
56
+ "right",
57
+ $spacing-hero-tooltip-width,
58
+ $spacing-hero-tooltip-height
59
+ );
57
60
  }
58
61
  }
59
62
 
60
63
  @include breakpoint("large") {
61
- --card-width: minmax(200px, 625px);
62
- --corner-cut-height: #{$corner-cut-lg};
64
+ --card-width: 625px;
65
+ --corner-cut-height: #{$spacing-hero-card-corner-cut-height-lg};
63
66
  --breadcrumbs-height: 48px;
64
- --card-offset: 109px;
65
67
  --image-gap: 240px;
66
68
 
67
69
  // Defaults to baseline
68
70
  --row-1-lg: var(--breadcrumbs-height);
69
71
  --row-2-lg: calc(var(--image-gap) - var(--breadcrumbs-height));
70
72
  --row-3-lg: auto;
71
- --row-4-lg: #{$tooltip-height};
73
+ --row-4-lg: #{$spacing-hero-tooltip-height};
72
74
  --row-5-lg: 72px;
73
75
 
74
76
  --col-1-lg: 0;
75
77
  --col-2-lg: var(--card-width);
76
- --col-3-lg: #{$tooltip-width};
78
+ --col-3-lg: #{$spacing-hero-tooltip-width};
77
79
  --col-4-lg: 1fr;
78
80
 
79
81
  grid-template-rows:
@@ -109,45 +111,47 @@
109
111
 
110
112
  &__card-size {
111
113
  &__small {
112
- --card-width: minmax(200px, 625px);
114
+ --card-width: 625px;
113
115
  }
114
116
 
115
117
  &__medium {
116
- --card-width: minmax(200px, 721px);
118
+ --card-width: 721px;
117
119
  }
118
120
 
119
121
  &__large {
120
- --card-width: minmax(200px, 856px);
122
+ --card-width: 856px;
121
123
  }
122
124
 
123
125
  &__xlarge {
124
- --card-width: minmax(200px, 920px);
126
+ --card-width: 920px;
125
127
  }
126
128
 
127
129
  &__xxlarge {
128
- --card-width: minmax(200px, 998px);
130
+ --card-width: 998px;
129
131
  }
130
132
  }
131
133
 
132
134
  &__card-justify {
133
135
  &__start {
134
- --col-1-lg: 0;
136
+ --col-1-lg: #{$card-offset};
135
137
  }
136
138
 
137
139
  &__offset {
138
- --col-1-lg: var(--card-offset);
140
+ --col-1-lg: #{$card-offset-justified};
139
141
  }
140
142
 
141
143
  &__center {
142
- --col-1-lg: 1fr;
143
- --col-4-lg: 1fr;
144
+ --col-1-lg: calc((100% - var(--card-width)) / 2);
145
+ --col-4-lg: calc(
146
+ ((100% - var(--card-width)) / 2) - #{$spacing-hero-tooltip-width}
147
+ );
144
148
  }
145
149
  }
146
150
 
147
151
  &__card-align {
148
152
  &__center {
149
- --row-4-lg: calc(72px - #{$tooltip-height});
150
- --row-5-lg: #{$tooltip-height};
153
+ --row-4-lg: calc(72px - #{$spacing-hero-tooltip-height});
154
+ --row-5-lg: #{$spacing-hero-tooltip-height};
151
155
  }
152
156
 
153
157
  &__bottom {
@@ -157,6 +161,46 @@
157
161
  }
158
162
  }
159
163
 
164
+ &__card-background {
165
+ &__transparent {
166
+ #{$c}--card-offset {
167
+ background-color: transparent !important;
168
+ }
169
+ }
170
+ }
171
+
172
+ &__card-theme {
173
+ &__dark {
174
+ #{$c}--card-offset {
175
+ background-color: map-get($color, "base", "blue", "dark");
176
+ }
177
+
178
+ &[class*="semi-transparent"] {
179
+ #{$c}--card-offset {
180
+ background: rgba(
181
+ map-get($color, "hero", "card", "dark", "background"),
182
+ $opacity-semi-transparent
183
+ );
184
+ }
185
+ }
186
+ }
187
+
188
+ &__light {
189
+ #{$c}--card-offset {
190
+ background: map-get($color, "hero", "card", "light", "background");
191
+ }
192
+
193
+ &[class*="semi-transparent"] {
194
+ #{$c}--card-offset {
195
+ background: rgba(
196
+ map-get($color, "hero", "card", "light", "background"),
197
+ $opacity-semi-transparent
198
+ );
199
+ }
200
+ }
201
+ }
202
+ }
203
+
160
204
  &--breadcrumbs {
161
205
  grid-area: 1 / 1 / 2 / 5;
162
206
  z-index: 1;
@@ -164,7 +208,15 @@
164
208
  flex-flow: row nowrap;
165
209
 
166
210
  &--wrapper {
167
- max-width: 500px;
211
+ width: 100%;
212
+ }
213
+
214
+ &:before {
215
+ content: "";
216
+ background-color: $color-base-neutrals-white;
217
+ position: relative;
218
+ height: 100%;
219
+ width: max($spacing-hero-card-padding-x-lg, $base-offset);
168
220
  }
169
221
  }
170
222
 
@@ -180,6 +232,25 @@
180
232
  }
181
233
  }
182
234
 
235
+ &--card-offset {
236
+ grid-area: 3 / 1 / 6 / 2;
237
+ z-index: 0;
238
+ background-color: transparent;
239
+
240
+ #{$c}__card-justify__offset &,
241
+ #{$c}__card-justify__center & {
242
+ background-color: transparent;
243
+ }
244
+
245
+ #{$c}__card-align__center & {
246
+ grid-area: 3 / 1 / 4 / 2;
247
+ }
248
+
249
+ #{$c}__card-align__bottom & {
250
+ grid-area: 4 / 1 / 6 / 2;
251
+ }
252
+ }
253
+
183
254
  &--card {
184
255
  grid-area: 3 / 2 / 6 / 3;
185
256
 
@@ -219,8 +290,8 @@
219
290
  #{$c}--caption--wrapper {
220
291
  @include caption-icon-wrapper(
221
292
  "right",
222
- $tooltip-width,
223
- $tooltip-height
293
+ $spacing-hero-tooltip-width,
294
+ $spacing-hero-tooltip-height
224
295
  );
225
296
 
226
297
  position: absolute;
@@ -240,7 +311,11 @@
240
311
  .right-to-left & {
241
312
  &--caption {
242
313
  &--wrapper {
243
- @include caption-icon-wrapper("left", $tooltip-width, $tooltip-height);
314
+ @include caption-icon-wrapper(
315
+ "left",
316
+ $spacing-hero-tooltip-width,
317
+ $spacing-hero-tooltip-height
318
+ );
244
319
  position: absolute;
245
320
  right: 0;
246
321
  }
@@ -250,23 +325,25 @@
250
325
  &__card-justify {
251
326
  &__start {
252
327
  --col-1-lg: 1fr;
253
- --col-2-lg: #{$tooltip-width};
328
+ --col-2-lg: #{$spacing-hero-tooltip-width};
254
329
  --col-3-lg: var(--card-width);
255
- --col-4-lg: 0;
330
+ --col-4-lg: #{$card-offset};
256
331
  }
257
332
 
258
333
  &__offset {
259
334
  --col-1-lg: 1fr;
260
- --col-2-lg: #{$tooltip-width};
335
+ --col-2-lg: #{$spacing-hero-tooltip-width};
261
336
  --col-3-lg: var(--card-width);
262
- --col-4-lg: var(--card-offset);
337
+ --col-4-lg: #{$card-offset-justified};
263
338
  }
264
339
 
265
340
  &__center {
266
- --col-1-lg: 1fr;
267
- --col-2-lg: #{$tooltip-width};
341
+ --col-1-lg: calc(
342
+ ((100% - var(--card-width)) / 2) - #{$spacing-hero-tooltip-width}
343
+ );
344
+ --col-2-lg: #{$spacing-hero-tooltip-width};
268
345
  --col-3-lg: var(--card-width);
269
- --col-4-lg: 1fr;
346
+ --col-4-lg: calc((100% - var(--card-width)) / 2);
270
347
  }
271
348
  }
272
349
 
@@ -307,8 +384,8 @@
307
384
  &--wrapper {
308
385
  @include caption-icon-wrapper(
309
386
  "left",
310
- $tooltip-width,
311
- $tooltip-height
387
+ $spacing-hero-tooltip-width,
388
+ $spacing-hero-tooltip-height
312
389
  );
313
390
 
314
391
  position: absolute;
@@ -319,6 +396,10 @@
319
396
  }
320
397
  }
321
398
 
399
+ &--card-offset {
400
+ grid-area: 3 / 4 / 6 / 5;
401
+ }
402
+
322
403
  &--card {
323
404
  grid-area: 3 / 3 / 6 / 4;
324
405
  }
@@ -336,8 +417,8 @@
336
417
 
337
418
  @include caption-icon-wrapper(
338
419
  "left",
339
- $tooltip-width,
340
- $tooltip-height
420
+ $spacing-hero-tooltip-width,
421
+ $spacing-hero-tooltip-height
341
422
  );
342
423
  }
343
424
  }
@@ -4,16 +4,13 @@
4
4
 
5
5
  .ilo--hero-card {
6
6
  $c: &;
7
- $semi-transparent: 0.6;
8
- $padding-lg: $spacing-padding-8;
9
- $padding-sm: $spacing-padding-5;
10
7
 
11
8
  height: 100%;
12
9
  position: relative;
13
- padding: $padding-sm 16px;
10
+ padding: $spacing-hero-card-padding-y-sm $spacing-hero-card-padding-x-sm;
14
11
 
15
12
  @include breakpoint("large") {
16
- padding: $padding-lg;
13
+ padding: $spacing-hero-card-padding-y-lg $spacing-hero-card-padding-x-lg;
17
14
  }
18
15
 
19
16
  .right-to-left & {
@@ -38,7 +35,7 @@
38
35
  &.ilo--hero-card__background__semi-transparent {
39
36
  background: rgba(
40
37
  map-get($color, "hero", "card", "light", "background"),
41
- $semi-transparent
38
+ $opacity-semi-transparent
42
39
  );
43
40
  }
44
41
  }
@@ -52,7 +49,7 @@
52
49
  &.ilo--hero-card__background__semi-transparent {
53
50
  background: rgba(
54
51
  map-get($color, "hero", "card", "dark", "background"),
55
- $semi-transparent
52
+ $opacity-semi-transparent
56
53
  );
57
54
  }
58
55
  }
@@ -74,17 +71,31 @@
74
71
  }
75
72
 
76
73
  &__cornercut {
77
- @include cornercut(72px, 40px);
74
+ @include cornercut(
75
+ $spacing-hero-card-corner-cut-width-sm,
76
+ $spacing-hero-card-corner-cut-height-sm
77
+ );
78
78
 
79
79
  .right-to-left & {
80
- @include cornercut(72px, 40px, "left");
80
+ @include cornercut(
81
+ $spacing-hero-card-corner-cut-width-sm,
82
+ $spacing-hero-card-corner-cut-height-sm,
83
+ "left"
84
+ );
81
85
  }
82
86
 
83
87
  @include breakpoint("large") {
84
- @include cornercut(116px, 64px);
88
+ @include cornercut(
89
+ $spacing-hero-card-corner-cut-width-lg,
90
+ $spacing-hero-card-corner-cut-height-lg
91
+ );
85
92
 
86
93
  .right-to-left & {
87
- @include cornercut(116px, 64px, "left");
94
+ @include cornercut(
95
+ $spacing-hero-card-corner-cut-width-lg,
96
+ $spacing-hero-card-corner-cut-height-lg,
97
+ "left"
98
+ );
88
99
  }
89
100
  }
90
101
  }
@@ -5,6 +5,9 @@
5
5
  .ilo--pagination {
6
6
  display: flex;
7
7
  justify-content: space-between;
8
+ margin-bottom: px-to-rem(
9
+ map-get($spacing, "ux", "pagination", "padding", "top")
10
+ );
8
11
  margin-top: px-to-rem(
9
12
  map-get($spacing, "ux", "pagination", "padding", "top")
10
13
  );
@@ -12,7 +12,15 @@
12
12
  width: px-to-rem(24px);
13
13
  cursor: pointer;
14
14
 
15
- &:before {
15
+ input {
16
+ appearance: none;
17
+ width: px-to-rem(24px);
18
+ height: px-to-rem(24px);
19
+ border-radius: 50%;
20
+ cursor: pointer;
21
+ }
22
+
23
+ &--control:before {
16
24
  content: "";
17
25
  background-color: $color-base-neutrals-light;
18
26
  border: px-to-rem(4px) solid $color-base-neutrals-light;
@@ -26,7 +34,7 @@
26
34
  pointer-events: none;
27
35
  }
28
36
 
29
- &:after {
37
+ &--control:after {
30
38
  content: "";
31
39
  background-color: $color-base-neutrals-light;
32
40
  border-radius: 50%;
@@ -39,39 +47,26 @@
39
47
  pointer-events: none;
40
48
  }
41
49
 
42
- &:checked {
43
- &:before {
44
- background-color: $color-base-blue-light;
45
- border-color: $color-base-blue-dark;
46
- }
50
+ input:checked + &--control:before {
51
+ background-color: $color-base-blue-light;
52
+ border-color: $color-base-blue-dark;
53
+ }
47
54
 
48
- &:after {
49
- background-color: $color-base-blue-dark;
50
- }
55
+ input:checked + &--control:after {
56
+ background-color: $color-base-blue-dark;
51
57
  }
52
58
 
53
- &:focus {
54
- &:after {
55
- background-color: $color-base-yellow;
56
- }
57
- outline: none;
59
+ input:focus + &--control:after {
60
+ background-color: $color-base-yellow;
58
61
  }
59
62
 
60
- &:disabled {
63
+ input:disabled + &--control:after,
64
+ input:disabled + &--control:before {
61
65
  opacity: 45%;
62
- pointer-events: none;
63
66
  }
64
67
 
65
- &:invalid,
66
- &__error {
67
- &:after {
68
- background-color: $color-base-red-medium;
69
- }
70
-
71
- &:checked {
72
- &:before {
73
- border-color: $color-base-blue-dark;
74
- }
75
- }
68
+ input:invalid + &--control:after,
69
+ &__error &--control:after {
70
+ background-color: $color-base-red-medium;
76
71
  }
77
72
  }
@@ -39,16 +39,14 @@
39
39
  position: relative;
40
40
  cursor: pointer;
41
41
 
42
- &.has-icon {
42
+ &__icon {
43
43
  background-repeat: no-repeat;
44
44
  background-size: cover;
45
45
  height: px-to-rem($spacing-padding-2);
46
46
  min-width: px-to-rem($spacing-padding-2);
47
47
  @include dataurlicon("info", $color-ux-labels-actionable);
48
- }
49
48
 
50
- &--dark {
51
- &.has-icon {
49
+ &#{&}__theme__dark {
52
50
  @include dataurlicon("info", $color-tooltip-dark-icon);
53
51
  }
54
52
  }