@penskemediacorp/larva-css 1.8.0-alpha.0 → 1.8.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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +199 -22
  3. package/__tests__/fixtures/expected.js +29 -0
  4. package/__tests__/lib/generators.test.js +11 -0
  5. package/build/css/algorithms.common.async.css +4 -0
  6. package/build/css/algorithms.common.inline.css +21 -0
  7. package/build/css/generic.common.inline.css +4 -0
  8. package/build/css/js.common.async.css +3 -0
  9. package/build/css/js.common.inline.css +6 -0
  10. package/build/css/utilities.common.async.css +8 -0
  11. package/build/css/utilities.common.inline.css +29 -0
  12. package/gulpfile.js +110 -82
  13. package/lib/generators.js +93 -0
  14. package/package.json +14 -6
  15. package/src/01-generic/elements.common.inline.scss +33 -1
  16. package/src/01-generic/forms.common.inline.scss +10 -0
  17. package/src/01-generic/side-skins.common.inline.scss +10 -0
  18. package/src/01-generic/typography.common.inline.scss +23 -15
  19. package/src/02-algorithms/a-buy-now/a-buy-now.common.inline.scss +112 -0
  20. package/src/02-algorithms/a-carousel-grid/a-carousel-grid.common.inline.scss +66 -0
  21. package/src/02-algorithms/a-children-border/a-children-border.common.inline.scss +43 -0
  22. package/src/02-algorithms/a-children-link-color/a-children-link-color.common.inline.scss +15 -0
  23. package/src/02-algorithms/a-children-link-decoration/a-children-link-decoration.common.inline.scss +13 -0
  24. package/src/02-algorithms/a-counter/a-counter.common.inline.scss +26 -0
  25. package/src/02-algorithms/a-crop/README.md +17 -13
  26. package/src/02-algorithms/a-crop/a-crop.common.inline.scss +96 -12
  27. package/src/02-algorithms/a-crop/a-crop.html +2 -2
  28. package/src/02-algorithms/a-floated/a-floated.common.inline.scss +32 -0
  29. package/src/02-algorithms/a-font/a-font.common.inline.scss +3 -0
  30. package/src/02-algorithms/a-glue/a-glue.common.inline.scss +63 -6
  31. package/src/02-algorithms/a-glue/a-glue.html +2 -2
  32. package/src/02-algorithms/a-grid/README.md +141 -14
  33. package/src/02-algorithms/a-grid/a-grid.common.inline.scss +53 -5
  34. package/src/02-algorithms/a-grid/a-grid.html +4 -4
  35. package/src/02-algorithms/a-hidden/a-hidden.common.inline.scss +43 -0
  36. package/src/02-algorithms/a-hover-dropup/a-hover-dropup.common.async.scss +7 -7
  37. package/src/02-algorithms/a-hover-dropup/a-hover-dropup.html +3 -3
  38. package/src/02-algorithms/a-hover-effect/a-hover-effect.common.async.scss +25 -0
  39. package/src/02-algorithms/a-hover-effect/a-hover-effect.html +16 -0
  40. package/src/02-algorithms/a-icon/a-icon.common.async.scss +28 -3
  41. package/src/02-algorithms/a-icon/a-icon.common.inline.scss +51 -73
  42. package/src/02-algorithms/a-screen-reader-only/a-screen-reader-only.common.inline.scss +30 -0
  43. package/src/02-algorithms/a-scrollable-grid/a-scrollable-grid.common.inline.scss +52 -0
  44. package/src/02-algorithms/a-show-on-hover/a-show-on-hover.common.inline.scss +16 -0
  45. package/src/02-algorithms/a-space-children/a-space-children.common.inline.scss +88 -17
  46. package/src/02-algorithms/a-truncate-ellipsis/a-truncate-ellipsis.common.async.scss +71 -0
  47. package/src/02-algorithms/a-unstyle-button/a-unstyle-button.common.inline.scss +2 -3
  48. package/src/02-algorithms/a-unstyle-link/a-unstyle-link.common.inline.scss +7 -0
  49. package/src/02-algorithms/a-unstyle-list/a-unstyle-list.common.inline.scss +1 -1
  50. package/src/02-algorithms/a-wrapper/a-wrapper.common.inline.scss +14 -2
  51. package/src/03-utilities/u-background-color.common.async.scss +15 -0
  52. package/src/03-utilities/u-background-color.common.inline.scss +37 -0
  53. package/src/03-utilities/u-border-color.common.async.scss +36 -8
  54. package/src/03-utilities/u-border-radius.common.async.scss +26 -2
  55. package/src/03-utilities/u-border.common.inline.scss +215 -4
  56. package/src/03-utilities/u-box-alignment.common.inline.scss +64 -4
  57. package/src/03-utilities/u-box-shadow.common.async.scss +34 -3
  58. package/src/03-utilities/u-color.common.async.scss +19 -21
  59. package/src/03-utilities/u-color.common.inline.scss +39 -0
  60. package/src/03-utilities/u-cursor.common.async.scss +1 -1
  61. package/src/03-utilities/u-display.common.inline.scss +87 -4
  62. package/src/03-utilities/u-filter.common.async.scss +5 -0
  63. package/src/03-utilities/u-flex.common.inline.scss +151 -9
  64. package/src/03-utilities/u-font-family.common.inline.scss +41 -17
  65. package/src/03-utilities/u-font-size.common.inline.scss +58 -5
  66. package/src/03-utilities/u-font-style.common.inline.scss +9 -0
  67. package/src/03-utilities/u-font-weight.common.inline.scss +50 -12
  68. package/src/03-utilities/u-height.common.inline.scss +38 -8
  69. package/src/03-utilities/u-left.common.inline.scss +7 -0
  70. package/src/03-utilities/u-letter-spacing.common.inline.scss +11 -0
  71. package/src/03-utilities/u-line-height.common.inline.scss +49 -13
  72. package/src/03-utilities/u-list-style.common.async.scss +3 -0
  73. package/src/03-utilities/u-margin.common.inline.scss +182 -47
  74. package/src/03-utilities/u-max-width.common.inline.scss +25 -0
  75. package/src/03-utilities/u-opacity.common.inline.scss +3 -0
  76. package/src/03-utilities/u-order.common.inline.scss +29 -2
  77. package/src/03-utilities/u-overflow.common.inline.scss +14 -2
  78. package/src/03-utilities/u-padding.common.inline.scss +157 -52
  79. package/src/03-utilities/u-position.common.inline.scss +11 -0
  80. package/src/03-utilities/u-text-align.common.inline.scss +27 -4
  81. package/src/03-utilities/u-text-decoration.common.inline.scss +11 -0
  82. package/src/03-utilities/u-text-transform.common.inline.scss +14 -2
  83. package/src/03-utilities/u-top.common.inline.scss +7 -0
  84. package/src/03-utilities/u-transform.common.inline.scss +12 -0
  85. package/src/03-utilities/u-vertical-align.common.inline.scss +7 -0
  86. package/src/03-utilities/u-whitespace.common.inline.scss +1 -1
  87. package/src/03-utilities/u-width.common.inline.scss +198 -12
  88. package/src/04-js/README.md +5 -0
  89. package/src/04-js/js-Collapsible.common.inline.scss +15 -0
  90. package/src/04-js/js-ExpandableSearch.common.async.scss +33 -0
  91. package/src/04-js/js-Flickity.common.async.scss +91 -0
  92. package/src/04-js/js-Header.common.inline.scss +73 -0
  93. package/src/04-js/js-MegaMenu.common.inline.scss +50 -0
  94. package/src/04-js/js-MobileHeightToggle.common.inline.scss +7 -5
  95. package/src/04-js/js-PopOver.common.async.scss +13 -0
  96. package/src/04-js/js-Tooltip.common.inline.scss +17 -0
  97. package/src/04-js/js-VideoShowcase.common.inline.scss +33 -0
  98. package/src/04-js/partials/expandable-search.scss +202 -0
  99. package/src/04-js/partials/flickity.scss +149 -0
  100. package/src/_generated/_a-font.scss +1027 -0
  101. package/src/larva-ui/prism.scss +127 -0
  102. package/src/setup.scss +7 -0
  103. package/stylelint.config.js +10 -11
  104. package/build/css/algorithms.common.async.scss +0 -36
  105. package/build/css/algorithms.common.inline.scss +0 -274
  106. package/build/css/generic.common.inline.scss +0 -66
  107. package/build/css/js.common.inline.scss +0 -9
  108. package/build/css/utilities.common.async.scss +0 -57
  109. package/build/css/utilities.common.inline.scss +0 -473
  110. package/holding/a-truncate-children/README.md +0 -3
  111. package/holding/a-truncate-children/a-truncate-children.browser-test.js +0 -104
  112. package/holding/a-truncate-children/a-truncate-children.css +0 -4
  113. package/holding/a-truncate-children/a-truncate-children.html +0 -15
  114. package/holding/a-truncate-children/a-truncate-children.scss +0 -5
  115. package/src/01-generic/config.common.inline.scss +0 -18
  116. package/src/02-algorithms/.DS_Store +0 -0
  117. package/src/02-algorithms/a-glue/index.js +0 -1
  118. package/src/02-algorithms/a-icon/a-icon.html +0 -20
  119. package/src/02-algorithms/a-unstyle-link/a-unstyle-link.common.async.scss +0 -5
  120. package/src/03-utilities/u-background.common.async.scss +0 -28
@@ -1,32 +1,40 @@
1
- @import '@penskemediacorp/larva-scss/dist/tokens';
1
+ @import 'setup';
2
2
 
3
3
  body {
4
4
 
5
- // @todo: this is outside the system and it should use the font-family mixin.
6
- // That mixin needs to support `&.wf-active`, right now it only supports `.wf-active &`.
7
- // stylelint-disable property-blacklist
8
- font-family: Helvetica, sans-serif;
5
+ // stylelint-disable property-disallowed-list
6
+ font-family: map-get( $TOKENS-MAP, font-family-basic );
7
+ font-family: var( --font-family-basic, #{map-get( $TOKENS-MAP, font-family-basic )} );
9
8
 
10
9
  margin: $spacer-0;
11
-
12
- // stylelint-enable property-blacklist
10
+ // stylelint-enable property-disallowed-list
13
11
 
14
12
  line-height: $line-height-normal;
15
13
  }
16
14
 
15
+ // Apply the webfont when fonts are loaded.
16
+ .wf-active body {
17
+
18
+ @each $token, $value in $TOKENS-MAP {
19
+ $token-str: quote( $token );
20
+
21
+ // example: font-family-primary
22
+ // each will have a corresponding `fancy` variation.
23
+ @if str-index( $token-str, 'font-family' ) and not str-index( $token-str, 'fancy' ) {
24
+ --#{$token}: var( --#{$token}-fancy );
25
+ }
26
+ }
27
+
28
+ }
29
+
17
30
  strong {
18
- font-weight: $font-weight-bold;
31
+ font-weight: map-get( $semantic-font-weights, bold );
19
32
  }
20
33
 
21
34
  a {
22
- color: map-get( $semantic-color-list, brand-primary );
23
- color: var( --color-brand-primary, #{map-get( $semantic-color-list, brand-primary )} );
35
+ color: map-get( $TOKENS-MAP, brand-primary );
36
+ color: var( --color-brand-primary, #{map-get( $TOKENS-MAP, color-brand-primary )} );
24
37
  text-decoration: none;
25
-
26
- &:hover {
27
- color: map-get( $semantic-color-list, brand-primary );
28
- color: var( --color-brand-primary, #{map-get( $semantic-color-list, brand-primary )} );
29
- }
30
38
  }
31
39
 
32
40
  h1,
@@ -0,0 +1,112 @@
1
+ @import 'setup';
2
+
3
+ .lrv-a-buy-now {
4
+ display: flex;
5
+ flex-direction: column;
6
+ align-items: center;
7
+ position: relative;
8
+
9
+ @include pmc-breakpoint( tablet ) {
10
+ display: block;
11
+ }
12
+ }
13
+
14
+ .lrv-a-buy-now__image {
15
+ position: relative;
16
+ z-index: 1;
17
+ width: 100%;
18
+ background-color: $color-white;
19
+ max-width: pmc-rem(300);
20
+
21
+ @include pmc-breakpoint( tablet ) {
22
+ width: pmc-rem(190); // 160 + 30
23
+ left: 0;
24
+ padding: 0 pmc-rem(30) 0 0;
25
+ }
26
+
27
+ @include pmc-breakpoint( desktop ) {
28
+ width: pmc-rem(245); // 185 + 30 + 30
29
+ left: pmc-rem(94);
30
+ padding: 0 pmc-rem(30);
31
+ }
32
+ }
33
+
34
+ .lrv-a-buy-now__button {
35
+ margin-top: pmc-rem(16);
36
+
37
+ @include pmc-breakpoint( tablet ) {
38
+ margin-top: 0;
39
+ position: absolute;
40
+ top: 50%;
41
+ left: pmc-rem(190);
42
+ transform: translateY(-50%);
43
+ }
44
+
45
+ @include pmc-breakpoint( desktop ) {
46
+ left: pmc-rem(339);
47
+ }
48
+ }
49
+
50
+ .lrv-a-buy-now__hr {
51
+ display: none;
52
+ margin: 0;
53
+ padding: 0;
54
+ border-top: pmc-rem(0.5) solid #000;
55
+ position: relative;
56
+
57
+ @include pmc-breakpoint( tablet ) {
58
+ display: block;
59
+ }
60
+ }
61
+
62
+ .lrv-a-buy-now__hr--top {
63
+ top: 0;
64
+
65
+ @include pmc-breakpoint( tablet ) {
66
+ top: pmc-rem(37);
67
+ }
68
+
69
+ @include pmc-breakpoint( desktop ) {
70
+ top: pmc-rem(50);
71
+ }
72
+ }
73
+
74
+ .lrv-a-buy-now__hr--bottom {
75
+ bottom: 0;
76
+
77
+ @include pmc-breakpoint( tablet ) {
78
+ bottom: pmc-rem(37);
79
+ }
80
+
81
+ @include pmc-breakpoint( desktop ) {
82
+ bottom: pmc-rem(50);
83
+ }
84
+ }
85
+
86
+ // Optional span.
87
+ .lrv-a-buy-now__span {
88
+ display: none;
89
+ position: absolute;
90
+ right: 0;
91
+
92
+ @include pmc-breakpoint( tablet ) {
93
+ display: block;
94
+ bottom: pmc-rem(16);
95
+ }
96
+
97
+ @include pmc-breakpoint( desktop ) {
98
+ bottom: pmc-rem(29);
99
+ }
100
+ }
101
+
102
+ // Used when image is not present.
103
+ .lrv-a-buy-now__p {
104
+ display: flex;
105
+ flex-direction: column;
106
+ align-items: center;
107
+ }
108
+
109
+ .lrv-a-buy-now__p .lrv-a-buy-now__button {
110
+ position: inherit;
111
+ transform: none;
112
+ }
@@ -0,0 +1,66 @@
1
+ @import 'setup';
2
+
3
+ .lrv-a-carousel-grid {
4
+ --grid-overlay: initial;
5
+
6
+ display: grid;
7
+ grid-template-columns: 1fr;
8
+
9
+ @include pmc-breakpoint( tablet ) {
10
+ grid-gap: var(--spacing-050);
11
+ grid-template-columns: 2fr 1fr;
12
+ }
13
+ }
14
+
15
+ .lrv-a-carousel-grid__overlay {
16
+ --grid-overlay: grid;
17
+
18
+ @include pmc-breakpoint( tablet ) {
19
+ grid-template-columns: 1fr;
20
+ }
21
+ }
22
+
23
+ .lrv-a-carousel-grid__overlay--primary {
24
+
25
+ @include pmc-breakpoint( desktop ) {
26
+ display: var(--grid-overlay);
27
+ grid-template-columns: 1fr 1.5rem 2fr;
28
+ align-items: center;
29
+ grid-auto-flow: column;
30
+ height: 100%;
31
+ }
32
+ }
33
+
34
+ .lrv-a-carousel-grid__overlay--primary-img {
35
+
36
+ @include pmc-breakpoint( desktop ) {
37
+ grid-column: 2/4;
38
+ grid-row: 1;
39
+ }
40
+ }
41
+
42
+ .lrv-a-carousel-grid__overlay--primary-content {
43
+
44
+ @include pmc-breakpoint( desktop ) {
45
+ grid-column: 1/3;
46
+ grid-row: 1;
47
+ padding: 1.875rem;
48
+ z-index: 1;
49
+ background-color: #fff;
50
+ }
51
+ }
52
+
53
+ .lrv-a-carousel-grid__overlay--secondary {
54
+
55
+ @include pmc-breakpoint( desktop ) {
56
+ display: var(--grid-overlay);
57
+ grid-template-columns: repeat(3,1fr);
58
+ grid-gap: var(--spacing-125);
59
+ }
60
+ }
61
+
62
+ .lrv-a-carousel-grid__overlay--secondary-card {
63
+ display: var(--grid-overlay);
64
+ grid-template-columns: 6.25rem 1fr;
65
+ grid-gap: var(--spacing-1);
66
+ }
@@ -0,0 +1,43 @@
1
+ @import 'setup';
2
+
3
+ :root {
4
+ --a-children-border-color: #{ map-get( $TOKENS-MAP, color-black ) };
5
+ }
6
+
7
+ .lrv-a-children-border--grey {
8
+ --a-children-border-color: #{ map-get( $TOKENS-MAP, border-color-grey ) };
9
+ }
10
+
11
+ .lrv-a-children-border--grey-light {
12
+ --a-children-border-color: #{ map-get( $TOKENS-MAP, border-color-grey-light ) };
13
+ }
14
+
15
+ // stylelint-disable selector-max-compound-selectors
16
+ .lrv-a-children-border-vertical {
17
+ & > * + * {
18
+ border-top: var(--a-children-border-width, 1px) solid var(--a-children-border-color, '');
19
+ }
20
+ }
21
+
22
+ .lrv-a-children-border-vertical\@mobile-max {
23
+ @include pmc-breakpoint(mobile-max) {
24
+ & > * + * {
25
+ border-top: var(--a-children-border-width, 1px) solid var(--a-children-border-color, '');
26
+ }
27
+ }
28
+ }
29
+
30
+ .lrv-a-children-border-horizontal {
31
+ & > * + * {
32
+ border-left: var(--a-children-border-width, 1px) solid var(--a-children-border-color, '');
33
+ }
34
+ }
35
+
36
+ .lrv-a-children-border-horizontal\@desktop {
37
+ @include pmc-breakpoint(desktop) {
38
+ & > * + * {
39
+ border-left: var(--a-children-border-width, 1px) solid var(--a-children-border-color, '');
40
+ }
41
+ }
42
+ }
43
+ // stylelint-enable selector-max-compound-selectors
@@ -0,0 +1,15 @@
1
+ @import 'setup';
2
+
3
+ .lrv-a-children-link-color-black {
4
+ & > a {
5
+ color: map-get( $TOKENS-MAP, color-black );
6
+ color: var( --color-black );
7
+ }
8
+ }
9
+
10
+ .lrv-a-children-link-color-brand-primary\:hover {
11
+ & > a:hover {
12
+ color: map-get( $TOKENS-MAP, color-brand-primary );
13
+ color: var( --color-brand-primary );
14
+ }
15
+ }
@@ -0,0 +1,13 @@
1
+ @import 'setup';
2
+
3
+ .lrv-a-children-link-decoration-underline {
4
+ & > a {
5
+ text-decoration: underline;
6
+ }
7
+ }
8
+
9
+ .lrv-a-children-link-decoration-underline\:hover {
10
+ & > a:hover {
11
+ text-decoration: underline;
12
+ }
13
+ }
@@ -0,0 +1,26 @@
1
+ .lrv-a-counter {
2
+ counter-reset: a-counter;
3
+ }
4
+
5
+ .lrv-a-counter-increment {
6
+ counter-increment: a-counter;
7
+ }
8
+
9
+ .lrv-a-counter-before::before {
10
+ content: counter( a-counter );
11
+ display: var( --a-counter__display, inline-block);
12
+ padding: var( --a-counter__padding, initial );
13
+ background-color: var( --a-counter__background-color, initial );
14
+ color: var( --a-counter__color, inherit );
15
+ border-top-right-radius: var( --a-counter__border-top-right-radius, inherit );
16
+ font-family: var( --a-counter__font-family, inherit );
17
+ font-size: var( --a-counter__font-size, inherit ); // stylelint-disable-line property-blacklist
18
+ line-height: var( --a-counter__line-height, 0.7 );
19
+ font-weight: var( --a-counter__font-weight, inherit ); // stylelint-disable-line property-blacklist
20
+ z-index: 1;
21
+ position: var( --a-counter__position, initial );
22
+ left: var( --a-counter__left, auto );
23
+ top: var( --a-counter__top, auto );
24
+ right: var( --a-counter__right, auto );
25
+ bottom: var( --a-counter__bottom, auto );
26
+ }
@@ -1,31 +1,35 @@
1
- # Crop
1
+ # a-crop
2
2
 
3
3
  The cropping algorithm applies an aspect ratio to a element containing an image, and will crop the contained image to the aspect ratio. It uses background-size: cover, padding, and absolute positioning to do this.
4
4
 
5
- The classes output by the generator are `.pmc-a-crop-WIDTHxHEIGHT`, so a 16x9 cropped image would use the class `.pmc-a-crop-16x9`.
5
+ The classes output by the generator are `.a-crop-WIDTHxHEIGHT`, so a 16x9 cropped image would use the class `.a-crop-16x9`.
6
6
 
7
- The available aspect ratios output from this package are:
7
+ ## Available Classes
8
8
 
9
- ```
10
- .pmc-a-crop-1x1
11
- .pmc-a-crop-2x1
12
- .pmc-a-crop-2x3
13
- .pmc-a-crop-4x3
14
- .pmc-a-crop-16x9
15
- .pmc-a-crop-3x4
16
- ```
9
+ Reference the Sass list in a-crop.common.inline.scss to see a list of a-crop classes provided by Larva CSS.
10
+
11
+ ## Algorithm Source
17
12
 
18
13
  The source for the cropping algorithm is:
14
+
19
15
  ```
20
- .pmc-a-crop-16x9 {
16
+ .lrv-a-crop-16x9 {
21
17
  position: relative;
22
18
  padding-bottom: calc( ( 9 / 16 ) * 100%);
23
19
  }
24
20
 
25
- .pmc-a-crop-16x9 img {
21
+ .lrv-a-crop-16x9 img {
26
22
  position: absolute;
27
23
  width: 100%;
28
24
  height: 100%;
29
25
  object-fit: cover;
30
26
  }
31
27
  ```
28
+
29
+ ## Extendable?
30
+
31
+ **Do no extend `a-crop`**. Create a separate algorithm, or use utilities for properties like the following:
32
+
33
+ * object-fit - change the scaling behavior of the image e.g. `u-object-fit-contain`.
34
+ * object-position - change the alignment of a cropped image, e.g. align it to the top rather than center.
35
+ * background-color – update the background color that may appear while an image is loading.
@@ -1,12 +1,96 @@
1
- @import '@penskemediacorp/larva-scss/dist/generators';
2
-
3
- @include pmc-a-crop(
4
- (
5
- '1x1': (1, 1),
6
- '2x1': (2, 2),
7
- '2x3': (3, 2),
8
- '4x3': (4, 3),
9
- '16x9': (16, 9),
10
- '3x4': (3, 4)
11
- )
12
- );
1
+ @import 'setup';
2
+
3
+ $aspect-ratios: (
4
+ '1x1': (1, 1),
5
+ '2x1': (2, 1),
6
+ '2x3': (2, 3),
7
+ '3x2': (3, 2),
8
+ '4x3': (4, 3),
9
+ '16x9': (16, 9),
10
+ '5x1': (5, 1),
11
+ '5x2': (5, 2),
12
+ '3x4': (3, 4)
13
+ );
14
+
15
+ @include a-crop( $aspect-ratios, $NAMESPACE: 'lrv-' );
16
+
17
+ .lrv-a-crop-contain img { // Required for a-crop
18
+ object-fit: contain;
19
+ }
20
+
21
+ .lrv-a-crop-1x1\@mobile-max {
22
+ @include pmc-breakpoint( mobile-max ) {
23
+
24
+ position: relative;
25
+ padding-bottom: 100%;
26
+
27
+ img {
28
+ position: absolute;
29
+ width: 100%;
30
+ height: 100%;
31
+ object-fit: cover;
32
+ }
33
+
34
+ }
35
+ }
36
+
37
+ .lrv-a-crop-3x2\@desktop-xl {
38
+ @include pmc-breakpoint( desktop-xl ) {
39
+
40
+ position: relative;
41
+ padding-bottom: calc( ( 2 / 3 ) * 100% );
42
+
43
+ img {
44
+ position: absolute;
45
+ width: 100%;
46
+ height: 100%;
47
+ object-fit: cover;
48
+ }
49
+ }
50
+ }
51
+
52
+ .lrv-a-crop-1x1\@tablet {
53
+ @include pmc-breakpoint( tablet ) {
54
+
55
+ position: relative;
56
+ padding-bottom: 100%;
57
+
58
+ img {
59
+ position: absolute;
60
+ width: 100%;
61
+ height: 100%;
62
+ object-fit: cover;
63
+ }
64
+
65
+ }
66
+ }
67
+
68
+ .lrv-a-crop-1x1\@desktop-xl-max {
69
+ @include pmc-breakpoint( desktop-xl-max ) {
70
+
71
+ position: relative;
72
+ padding-bottom: 100%;
73
+
74
+ img {
75
+ position: absolute;
76
+ width: 100%;
77
+ height: 100%;
78
+ object-fit: cover;
79
+ }
80
+ }
81
+ }
82
+
83
+ .lrv-a-crop-3x2\@mobile-max {
84
+ @include pmc-breakpoint( mobile-max ) {
85
+
86
+ position: relative;
87
+ padding-bottom: calc( ( 2 / 3 ) * 100% );
88
+
89
+ img {
90
+ position: absolute;
91
+ width: 100%;
92
+ height: 100%;
93
+ object-fit: cover;
94
+ }
95
+ }
96
+ }
@@ -9,11 +9,11 @@
9
9
  </head>
10
10
  <body>
11
11
 
12
- <div class="pmc-a-crop-16x9" style="width: 600px;">
12
+ <div class="lrv-a-crop-16x9" style="width: 600px;">
13
13
  <img src="https://pmcdeadline2.files.wordpress.com/2019/07/jonathan-majors.jpg" alt="">
14
14
  </div>
15
15
  <hr>
16
- <div class="pmc-a-crop-3x4" style="width: 400px;">
16
+ <div class="lrv-a-crop-3x4" style="width: 400px;">
17
17
  <img src="https://pmcdeadline2.files.wordpress.com/2019/07/jonathan-majors.jpg" alt="">
18
18
  </div>
19
19
 
@@ -0,0 +1,32 @@
1
+ @import '@penskemediacorp/larva-scss/dist/tools';
2
+
3
+ .lrv-a-floated-parent::before,
4
+ .lrv-a-floated-parent::after {
5
+ content: '';
6
+ display: table;
7
+ }
8
+
9
+ .lrv-a-floated-parent::after {
10
+ clear: both;
11
+ }
12
+
13
+ .lrv-a-floated-parent {
14
+ zoom: 1;
15
+ }
16
+
17
+ .lrv-a-floated-left {
18
+ float: left;
19
+ }
20
+
21
+ .lrv-a-floated-left\@tablet {
22
+
23
+ @include pmc-breakpoint( tablet ) {
24
+ float: left;
25
+ }
26
+ }
27
+
28
+ .lrv-a-floated-right\@tablet {
29
+ @include pmc-breakpoint(tablet) {
30
+ float: right;
31
+ }
32
+ }
@@ -0,0 +1,3 @@
1
+ @import 'setup';
2
+
3
+ @import '../../_generated/a-font';
@@ -10,11 +10,11 @@
10
10
  left: var( --a-glue-left, initial );
11
11
  }
12
12
 
13
- .pmc-a-glue-parent {
13
+ .lrv-a-glue-parent {
14
14
  position: relative;
15
15
  }
16
16
 
17
- .pmc-a-glue {
17
+ .lrv-a-glue {
18
18
  // Fallback is top left for everything.
19
19
  top: 0;
20
20
  left: 0;
@@ -22,18 +22,75 @@
22
22
  @include _a-glue-base;
23
23
  }
24
24
 
25
- .pmc-a-glue--l-0 {
25
+ @include pmc-breakpoint( mobile-max ) {
26
+ .lrv-a-glue\@mobile-max {
27
+ top: 0;
28
+ left: 0;
29
+
30
+ @include _a-glue-base;
31
+ }
32
+ }
33
+
34
+ .lrv-a-glue\@tablet {
35
+ @include pmc-breakpoint( tablet ) {
36
+ // TODO: incorporate these fallback values into mixin
37
+ top: 0;
38
+ left: 0;
39
+
40
+ @include _a-glue-base;
41
+ }
42
+ }
43
+
44
+ .lrv-a-glue--l-0 {
26
45
  --a-glue-left: 0;
27
46
  }
28
47
 
29
- .pmc-a-glue--r-0 {
48
+ .lrv-a-glue--r-0 {
30
49
  --a-glue-right: 0;
31
50
  }
32
51
 
33
- .pmc-a-glue--t-0 {
52
+ .lrv-a-glue--t-0 {
34
53
  --a-glue-top: 0;
35
54
  }
36
55
 
37
- .pmc-a-glue--b-0 {
56
+ .lrv-a-glue--b-0 {
38
57
  --a-glue-bottom: 0;
39
58
  }
59
+
60
+ .lrv-a-glue--t-50p {
61
+ --a-glue-top: 50%;
62
+ }
63
+
64
+ .lrv-a-glue--t-100p {
65
+ --a-glue-top: 100%;
66
+ }
67
+
68
+ .lrv-a-glue--l-50p {
69
+ --a-glue-left: 50%;
70
+ }
71
+
72
+ .lrv-a-glue--r-50p {
73
+ --a-glue-right: 50%;
74
+ }
75
+
76
+ .lrv-a-glue--b-n1 {
77
+ --a-glue-bottom: -1rem;
78
+ }
79
+
80
+ .lrv-a-glue-parent\@mobile-max {
81
+ @include pmc-breakpoint( mobile-max ) {
82
+ position: relative;
83
+ }
84
+ }
85
+
86
+ .lrv-a-glue-parent\@tablet {
87
+ @include pmc-breakpoint( tablet ) {
88
+ position: relative;
89
+ }
90
+ }
91
+
92
+ .lrv-a-glue--b-unset\@mobile-max {
93
+ @include pmc-breakpoint( mobile-max ) {
94
+ bottom: unset;
95
+ }
96
+ }
@@ -8,9 +8,9 @@
8
8
  <link rel="stylesheet" href="../../../build/css/algorithms.common.inline.css">
9
9
  </head>
10
10
  <body>
11
- <div class="pmc-a-glue-parent" style="display: inline-block;">
11
+ <div class="lrv-a-glue-parent" style="display: inline-block;">
12
12
  <img src="http://placehold.it/300x300" alt="">
13
- <p class="pmc-a-glue pmc-a-glue--t-0 pmc-a-glue--r-0">Glued Element</p>
13
+ <p class="lrv-a-glue lrv-a-glue--t-0 lrv-a-glue--r-0">Glued Element</p>
14
14
  </div>
15
15
  </body>
16
16
  </html>