@ulu/frontend 0.1.0-beta.31 → 0.1.0-beta.32

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.
@@ -99,17 +99,6 @@ $styles: (
99
99
  $styles: utils.map-merge($styles, $changes, $merge-mode) !global;
100
100
  }
101
101
 
102
- @mixin -left-cap($color: get("left-cap-color")) {
103
- $left-padding: get-spacing-left(get("padding"));
104
- position: relative;
105
- border-top-left-radius: 0;
106
- border-bottom-left-radius: 0;
107
- padding-left: get("left-cap-width") + $left-padding;
108
- &::before {
109
- content: "";
110
- }
111
- }
112
-
113
102
  /// Output component stylesheet
114
103
  /// @example scss
115
104
  /// @include ulu.component-callout-styles();
@@ -137,12 +126,10 @@ $styles: (
137
126
  }
138
127
  @if get("left-cap") {
139
128
  @include -left-cap();
140
- &::before {
141
- content: "";
142
- }
143
129
  }
144
130
  }
145
131
  @each $name, $style in $styles {
132
+ $left-cap-color: map.get($style, "left-cap-color");
146
133
  #{ $prefix }--#{ $name } {
147
134
  background-color: color.get(map.get($style, "background-color"));
148
135
  color: color.get(map.get($style, "color"));
@@ -151,14 +138,26 @@ $styles: (
151
138
  border-color: color.get(map.get($style, "border-color"));
152
139
  box-shadow: map.get($style, "box-shadow");
153
140
  padding: map.get($style, "padding");
154
- &::before {
155
- background-color: color.get(map.get($style, "left-cap-color"));
156
- }
157
- @if map.get($style, "left-cap") {
158
- @if not get("left-cap") {
159
- @include -left-cap();
141
+ @if $left-cap-color {
142
+ &::before {
143
+ background-color: color.get($left-cap-color);
160
144
  }
161
145
  }
146
+ @if map.get($style, "left-cap") and not get("left-cap") {
147
+ // if current style has left cap and the global callout does not. This prevents duplicate styles printing.
148
+ @include -left-cap();
149
+ }
162
150
  }
163
151
  }
152
+ }
153
+
154
+ @mixin -left-cap() {
155
+ $left-padding: get-spacing-left(get("padding"));
156
+ position: relative;
157
+ border-top-left-radius: 0;
158
+ border-bottom-left-radius: 0;
159
+ padding-left: get("left-cap-width") + $left-padding;
160
+ &::before {
161
+ content: "";
162
+ }
164
163
  }
@@ -10,6 +10,7 @@
10
10
  @use "../utils";
11
11
  @use "../selector";
12
12
  @use "../color";
13
+ @use "../layout";
13
14
 
14
15
  // todo
15
16
  // sass color adjust for smooth transition. Add a comment for this if we can’t get to this
@@ -209,13 +210,9 @@ $config: (
209
210
  overflow: hidden;
210
211
 
211
212
  // Border is on pseudo so that it's on top of image/etc
212
- &:after {
213
- position: absolute;
213
+ &::after {
214
+ @include layout.absolute-fill();
214
215
  content: if(get("border"), "", null);
215
- top: 0;
216
- bottom: 0;
217
- right: 0;
218
- left: 0;
219
216
  border: get("border");
220
217
  border-radius: get("border-radius");
221
218
  z-index: 4;
@@ -229,7 +226,7 @@ $config: (
229
226
  box-shadow: get("box-shadow-hover");
230
227
 
231
228
  @if (get("border-hover") or get("overlay-background-color-hover")) {
232
- &:after {
229
+ &::after {
233
230
  content: "";
234
231
  border: get("border-hover");
235
232
  background-color: color.get(get("overlay-background-color-hover"));
@@ -293,11 +290,7 @@ $config: (
293
290
  }
294
291
  #{ $prefix }__image img,
295
292
  #{ $prefix}__image-media {
296
- position: absolute;
297
- top: 0;
298
- left: 0;
299
- width: 100%;
300
- height: 100%;
293
+ @include layout.absolute-fill(true);
301
294
  border: 0;
302
295
  object-fit: cover;
303
296
  transform-origin: center center;
@@ -407,11 +400,7 @@ $config: (
407
400
  color: color.get(get("color-overlay"));
408
401
  }
409
402
  #{ $prefix }__image {
410
- position: absolute;
411
- top: 0;
412
- left: 0;
413
- bottom: 0;
414
- right: 0;
403
+ @include layout.absolute-fill();
415
404
  overflow: hidden;
416
405
  padding-top: 0;
417
406
  background-color: color.get(rgb(255, 255, 255));
@@ -425,12 +414,8 @@ $config: (
425
414
  border: 0;
426
415
  object-fit: cover;
427
416
  &::before {
428
- position: absolute;
417
+ @include layout.absolute-fill(true);
429
418
  display: block;
430
- top: 0;
431
- bottom: 0;
432
- left: 0;
433
- right: 0;
434
419
  background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(0, 0, 0, 0.9));
435
420
  }
436
421
  }
@@ -124,8 +124,8 @@ $config: (
124
124
  -moz-osx-font-smoothing: grayscale;
125
125
  -webkit-font-smoothing: antialiased;
126
126
  // Icons that share pseudos for strokes
127
- &:before,
128
- &:after {
127
+ &::before,
128
+ &::after {
129
129
  // content: "";
130
130
  display: block;
131
131
  position: absolute;
@@ -188,7 +188,7 @@ $config: (
188
188
 
189
189
  .css-icon--circle-info,
190
190
  .css-icon--circle-question {
191
- &:before {
191
+ &::before {
192
192
  content: "i";
193
193
  text-align: center;
194
194
  font-size: get("text-size");
@@ -208,7 +208,7 @@ $config: (
208
208
  }
209
209
  }
210
210
  .css-icon--circle-question {
211
- &:before {
211
+ &::before {
212
212
  content: "?";
213
213
  }
214
214
  }
@@ -229,13 +229,13 @@ $config: (
229
229
  clip-path: polygon(10% 10%, 90% 50%, 10% 90%);
230
230
  }
231
231
  [class*="css-icon--arrow"] {
232
- &:before {
232
+ &::before {
233
233
  content: "";
234
234
  width: 70%;
235
235
  left: 0;
236
236
  }
237
237
  // Note triangle clip-path is defined above with the solid triangle
238
- &:after {
238
+ &::after {
239
239
  content: "";
240
240
  border-radius: 0;
241
241
  height: 100%;
@@ -246,8 +246,8 @@ $config: (
246
246
  }
247
247
  [class*="css-icon--angle"] {
248
248
  transform: rotate(135deg);
249
- &:before,
250
- &:after {
249
+ &::before,
250
+ &::after {
251
251
  content: "";
252
252
  top: 30%;
253
253
  left: 30%;
@@ -255,14 +255,14 @@ $config: (
255
255
  transform: none;
256
256
  margin-top: 0;
257
257
  }
258
- &:after {
258
+ &::after {
259
259
  width: $stroke-width;
260
260
  height: 70%;
261
261
  }
262
262
  }
263
263
  @include for-each-stroke() using ($alt-width, $alt-border-radius) {
264
264
  &[class*="css-icon--angle"] {
265
- &:after {
265
+ &::after {
266
266
  width: $alt-width;
267
267
  }
268
268
  }
@@ -285,26 +285,26 @@ $config: (
285
285
 
286
286
  .css-icon--plus,
287
287
  .css-icon--plus-to-minus {
288
- &:before {
288
+ &::before {
289
289
  transform: translateX(-50%) rotate(90deg);
290
290
  }
291
- &:after {
291
+ &::after {
292
292
  transform: translateX(-50%);
293
293
  }
294
294
  }
295
295
  .css-icon--minus {
296
- &:before {
296
+ &::before {
297
297
  content: none;
298
298
  }
299
- &:after {
299
+ &::after {
300
300
  transform: translateX(-50%);
301
301
  }
302
302
  }
303
303
  .css-icon--close {
304
- &:before {
304
+ &::before {
305
305
  transform: translate(-50%) rotate(45deg);
306
306
  }
307
- &:after {
307
+ &::after {
308
308
  transform: translate(-50%) rotate(-45deg);
309
309
  }
310
310
  }
@@ -429,7 +429,7 @@ $config: (
429
429
  transition: none;
430
430
  transform: translate(-50%) rotate(-45deg);
431
431
  }
432
- &:before {
432
+ &::before {
433
433
  box-shadow: none;
434
434
  transform: translate(-50%) rotate(45deg);
435
435
  }
@@ -155,8 +155,8 @@ $config: (
155
155
  $attribute-item: "#{ $attribute }-item";
156
156
  $select-grid: '[#{ $attribute }*="columns: #{ $columns }"]';
157
157
  $select-item: '[#{ $attribute-item }]';
158
- $select-rule-col: ":before";
159
- $select-rule-row: ":after";
158
+ $select-rule-col: "::before";
159
+ $select-rule-row: "::after";
160
160
  $select-container: "[#{ $container-attribute }]";
161
161
  // These through off syntax highlighting when inside interpolation
162
162
  $position-class-column-first: get("position-class-column-first");
@@ -198,7 +198,7 @@ $config: (
198
198
  color: color.get(get("title-color-image"));
199
199
  @if(get("bottom-shadow")) {
200
200
  // bottom position includes padding so that the shadow
201
- &:after {
201
+ &::after {
202
202
  content: '';
203
203
  display: block;
204
204
  position: absolute;
@@ -355,7 +355,7 @@ $config: (
355
355
  transition: background-color 220ms ease-in-out;
356
356
  flex: 0 0 $input-touch-size; // When used in flex container
357
357
  // Box / Circle (centered absolute)
358
- &:before {
358
+ &::before {
359
359
  content: '';
360
360
  display: block;
361
361
  position: absolute;
@@ -373,7 +373,7 @@ $config: (
373
373
  transform: translate(-50%, -50%);
374
374
  }
375
375
  // Checkmark/ radio
376
- &:after {
376
+ &::after {
377
377
  content: '';
378
378
  display: block;
379
379
  position: relative;
@@ -386,32 +386,32 @@ $config: (
386
386
  }
387
387
  &:focus {
388
388
  background-color: color.get(get("check-input-touch-color-focus"));
389
- &:before {
389
+ &::before {
390
390
  border-color: color.get(get("check-input-border-color-focus"));
391
391
  outline: get("check-input-outline-focus");
392
392
  }
393
- &:after {
393
+ &::after {
394
394
  border-color: color.get(get("check-input-mark-color-focus"));
395
395
  }
396
396
  }
397
397
  &:hover {
398
398
  background-color: color.get(get("check-input-touch-color-hover"));
399
- &:before {
399
+ &::before {
400
400
  outline: get("check-input-outline-hover");
401
401
  background-color: color.get(get("check-input-background-color-hover"));
402
402
  border-color: color.get(get("check-input-border-color-hover"));
403
403
  }
404
- &:after {
404
+ &::after {
405
405
  border-color: color.get(get("check-input-mark-color-hover"));
406
406
  }
407
407
  }
408
408
  &:checked {
409
- &:before {
409
+ &::before {
410
410
  background-color: color.get(get("check-input-background-color-checked"));
411
411
  border-color: color.get(get("check-input-border-color-checked"));
412
412
  outline: get("check-input-outline-checked");
413
413
  }
414
- &:after {
414
+ &::after {
415
415
  opacity: 1;
416
416
  border-color: color.get(get("check-input-mark-color-checked"));
417
417
  }
@@ -427,10 +427,10 @@ $config: (
427
427
  }
428
428
  }
429
429
  [type="checkbox"] {
430
- &:before {
430
+ &::before {
431
431
  border-radius: -fallback("check-input-border-radius", "input-border-radius");
432
432
  }
433
- &:after {
433
+ &::after {
434
434
  border-radius: 0;
435
435
  width: get("check-input-checkmark-width");
436
436
  height: get("check-input-checkmark-height");
@@ -443,11 +443,11 @@ $config: (
443
443
  }
444
444
  &:indeterminate,
445
445
  &[aria-checked=mixed] {
446
- &:before {
446
+ &::before {
447
447
  background-color: color.get(get("check-input-background-color-indeterminate"));
448
448
  border-color: color.get(get("check-input-border-color-indeterminate"));
449
449
  }
450
- &:after {
450
+ &::after {
451
451
  border-right: none;
452
452
  transform: translatey(50%);
453
453
  opacity: 1;
@@ -11,6 +11,7 @@
11
11
  @use "../utils";
12
12
  @use "../breakpoint";
13
13
  @use "../typography";
14
+ @use "../layout";
14
15
 
15
16
  /// Module Settings
16
17
  /// @type Map
@@ -86,11 +87,7 @@ $config: (
86
87
  width: 100%;
87
88
  }
88
89
  #{ $prefix }__graphic-media {
89
- position: absolute;
90
- top: 0;
91
- left: 0;
92
- width: 100%;
93
- height: 100%;
90
+ @include layout.absolute-fill(true);
94
91
  object-fit: cover;
95
92
  }
96
93
 
@@ -171,11 +168,7 @@ $config: (
171
168
  z-index: 2;
172
169
  }
173
170
  #{ $prefix }__graphic {
174
- position: absolute;
175
- top: 0;
176
- left: 0;
177
- right: 0;
178
- bottom: 0;
171
+ @include layout.absolute-fill();
179
172
  }
180
173
  &#{ $prefix }--bottom,
181
174
  &#{ $prefix }--bottom #{ $prefix }__content {
@@ -9,6 +9,7 @@
9
9
  @use "../utils";
10
10
  @use "../breakpoint";
11
11
  @use "../color";
12
+ @use "../layout";
12
13
 
13
14
  /// Module Settings
14
15
  /// @type Map
@@ -81,11 +82,7 @@ $config: (
81
82
  }
82
83
  }
83
84
  .overlay-section__background {
84
- position: absolute;
85
- top: 0;
86
- left: 0;
87
- right: 0;
88
- bottom: 0;
85
+ @include layout.absolute-fill();
89
86
  img,
90
87
  video {
91
88
  object-fit: cover;
@@ -251,14 +251,14 @@ $config: (
251
251
  visibility: hidden;
252
252
  z-index: 1;
253
253
  &,
254
- &:before {
254
+ &::before {
255
255
  display: block;
256
256
  position: absolute;
257
257
  width: $size;
258
258
  height: $size;
259
259
  background: inherit;
260
260
  }
261
- &:before {
261
+ &::before {
262
262
  visibility: visible;
263
263
  content: '';
264
264
  transform: rotate(45deg);
@@ -279,7 +279,7 @@ $config: (
279
279
  // Account for footer and change arrow color when positioned next to it
280
280
  #{ $prefix }__footer ~ #{ $prefix }__arrow {
281
281
  [data-placement^="top"] > & {
282
- &:before {
282
+ &::before {
283
283
  background-color: get("footer-background-color");
284
284
  }
285
285
  }
@@ -311,25 +311,25 @@ $config: (
311
311
  visibility: hidden;
312
312
  z-index: 1;
313
313
  &,
314
- &:before,
315
- &:after {
314
+ &::before,
315
+ &::after {
316
316
  display: block;
317
317
  position: absolute;
318
318
  width: $size;
319
319
  height: $size;
320
320
  background: inherit;
321
321
  }
322
- &:before,
323
- &:after {
322
+ &::before,
323
+ &::after {
324
324
  visibility: visible;
325
325
  content: '';
326
326
  }
327
- &:before {
327
+ &::before {
328
328
  box-shadow: get("box-shadow");
329
329
  transform: rotate(45deg);
330
330
  }
331
331
  // Masking shape
332
- &:after {
332
+ &::after {
333
333
  top: 50%;
334
334
  left: 50%;
335
335
  transform: translateX(-50%);
@@ -355,8 +355,8 @@ $config: (
355
355
  // Account for footer and change arrow color when positioned next to it
356
356
  #{ $prefix }__footer ~ #{ $prefix }__arrow {
357
357
  [data-placement^="top"] > & {
358
- &:before,
359
- &:after {
358
+ &::before,
359
+ &::after {
360
360
  background-color: get("footer-background-color");
361
361
  }
362
362
  }
@@ -83,7 +83,7 @@ $config: (
83
83
  #{ $prefix }__body {
84
84
  line-height: get("body-line-height");
85
85
  @if (get("quote-mark-enabled")) {
86
- &:before {
86
+ &::before {
87
87
  display: block;
88
88
  position: relative;
89
89
  // content: open-quote;
@@ -5,6 +5,7 @@
5
5
 
6
6
  @use "sass:map";
7
7
  @use "../utils";
8
+ @use "../layout";
8
9
 
9
10
  /// Module Settings
10
11
  /// @type Map
@@ -49,11 +50,7 @@ $config: (
49
50
  padding: get("size") 0 0 0;
50
51
  }
51
52
  .ratio-box__content {
52
- position: absolute;
53
- top: 0;
54
- left: 0;
55
- width: 100%;
56
- height: 100%;
53
+ @include layout.absolute-fill(true);
57
54
  border: 0;
58
55
  }
59
56
  @each $name, $size in get("sizes") {
@@ -124,7 +124,7 @@ $config: (
124
124
  @include layout.match-container-margin("scroll-padding-left", get("container"));
125
125
  // padding: 1rem;
126
126
  // Add space to end of list
127
- // &:after {
127
+ // &::after {
128
128
  // content: "\00a0";
129
129
  // display: block;
130
130
  // width: 1rem;
@@ -96,7 +96,7 @@ $styles: () !default;
96
96
  transform-origin: $sizeHalf $sizeHalf;
97
97
  animation: UluFadeOut get("duration") linear infinite;
98
98
  }
99
- #{ $prefix }__spinner div:after {
99
+ #{ $prefix }__spinner div::after {
100
100
  content: " ";
101
101
  display: block;
102
102
  position: absolute;
@@ -181,7 +181,7 @@ $styles: () !default;
181
181
  transform-origin: $sizeHalf $sizeHalf;
182
182
  animation-duration: map.get($merged, "duration");
183
183
  }
184
- #{ $prefix }__spinner div:after {
184
+ #{ $prefix }__spinner div::after {
185
185
  left: $sizeHalf - $spoke-widthHalf;
186
186
  width: $spoke-width;
187
187
  height: map.get($merged, "spoke-height");
@@ -8,6 +8,7 @@
8
8
  @use "sass:map";
9
9
  @use "../utils";
10
10
  @use "../selector";
11
+ @use "../layout";
11
12
 
12
13
  /// Module Settings
13
14
  /// @type Map
@@ -49,11 +50,7 @@ $config: (
49
50
  &::after {
50
51
  content: "";
51
52
  display: block;
52
- position: absolute;
53
- top: 0;
54
- bottom: 0;
55
- left: 0;
56
- right: 0;
53
+ @include layout.absolute-fill();
57
54
  background: linear-gradient(0deg,color.change(get("background-color"), $alpha: 0.8),color.change(get("background-color"), $alpha: 0) 45%);
58
55
  pointer-events: none;
59
56
  }