@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.
- package/LICENSE +21 -0
- package/README.md +199 -22
- package/__tests__/fixtures/expected.js +29 -0
- package/__tests__/lib/generators.test.js +11 -0
- package/build/css/algorithms.common.async.css +4 -0
- package/build/css/algorithms.common.inline.css +21 -0
- package/build/css/generic.common.inline.css +4 -0
- package/build/css/js.common.async.css +3 -0
- package/build/css/js.common.inline.css +6 -0
- package/build/css/utilities.common.async.css +8 -0
- package/build/css/utilities.common.inline.css +29 -0
- package/gulpfile.js +110 -82
- package/lib/generators.js +93 -0
- package/package.json +14 -6
- package/src/01-generic/elements.common.inline.scss +33 -1
- package/src/01-generic/forms.common.inline.scss +10 -0
- package/src/01-generic/side-skins.common.inline.scss +10 -0
- package/src/01-generic/typography.common.inline.scss +23 -15
- package/src/02-algorithms/a-buy-now/a-buy-now.common.inline.scss +112 -0
- package/src/02-algorithms/a-carousel-grid/a-carousel-grid.common.inline.scss +66 -0
- package/src/02-algorithms/a-children-border/a-children-border.common.inline.scss +43 -0
- package/src/02-algorithms/a-children-link-color/a-children-link-color.common.inline.scss +15 -0
- package/src/02-algorithms/a-children-link-decoration/a-children-link-decoration.common.inline.scss +13 -0
- package/src/02-algorithms/a-counter/a-counter.common.inline.scss +26 -0
- package/src/02-algorithms/a-crop/README.md +17 -13
- package/src/02-algorithms/a-crop/a-crop.common.inline.scss +96 -12
- package/src/02-algorithms/a-crop/a-crop.html +2 -2
- package/src/02-algorithms/a-floated/a-floated.common.inline.scss +32 -0
- package/src/02-algorithms/a-font/a-font.common.inline.scss +3 -0
- package/src/02-algorithms/a-glue/a-glue.common.inline.scss +63 -6
- package/src/02-algorithms/a-glue/a-glue.html +2 -2
- package/src/02-algorithms/a-grid/README.md +141 -14
- package/src/02-algorithms/a-grid/a-grid.common.inline.scss +53 -5
- package/src/02-algorithms/a-grid/a-grid.html +4 -4
- package/src/02-algorithms/a-hidden/a-hidden.common.inline.scss +43 -0
- package/src/02-algorithms/a-hover-dropup/a-hover-dropup.common.async.scss +7 -7
- package/src/02-algorithms/a-hover-dropup/a-hover-dropup.html +3 -3
- package/src/02-algorithms/a-hover-effect/a-hover-effect.common.async.scss +25 -0
- package/src/02-algorithms/a-hover-effect/a-hover-effect.html +16 -0
- package/src/02-algorithms/a-icon/a-icon.common.async.scss +28 -3
- package/src/02-algorithms/a-icon/a-icon.common.inline.scss +51 -73
- package/src/02-algorithms/a-screen-reader-only/a-screen-reader-only.common.inline.scss +30 -0
- package/src/02-algorithms/a-scrollable-grid/a-scrollable-grid.common.inline.scss +52 -0
- package/src/02-algorithms/a-show-on-hover/a-show-on-hover.common.inline.scss +16 -0
- package/src/02-algorithms/a-space-children/a-space-children.common.inline.scss +88 -17
- package/src/02-algorithms/a-truncate-ellipsis/a-truncate-ellipsis.common.async.scss +71 -0
- package/src/02-algorithms/a-unstyle-button/a-unstyle-button.common.inline.scss +2 -3
- package/src/02-algorithms/a-unstyle-link/a-unstyle-link.common.inline.scss +7 -0
- package/src/02-algorithms/a-unstyle-list/a-unstyle-list.common.inline.scss +1 -1
- package/src/02-algorithms/a-wrapper/a-wrapper.common.inline.scss +14 -2
- package/src/03-utilities/u-background-color.common.async.scss +15 -0
- package/src/03-utilities/u-background-color.common.inline.scss +37 -0
- package/src/03-utilities/u-border-color.common.async.scss +36 -8
- package/src/03-utilities/u-border-radius.common.async.scss +26 -2
- package/src/03-utilities/u-border.common.inline.scss +215 -4
- package/src/03-utilities/u-box-alignment.common.inline.scss +64 -4
- package/src/03-utilities/u-box-shadow.common.async.scss +34 -3
- package/src/03-utilities/u-color.common.async.scss +19 -21
- package/src/03-utilities/u-color.common.inline.scss +39 -0
- package/src/03-utilities/u-cursor.common.async.scss +1 -1
- package/src/03-utilities/u-display.common.inline.scss +87 -4
- package/src/03-utilities/u-filter.common.async.scss +5 -0
- package/src/03-utilities/u-flex.common.inline.scss +151 -9
- package/src/03-utilities/u-font-family.common.inline.scss +41 -17
- package/src/03-utilities/u-font-size.common.inline.scss +58 -5
- package/src/03-utilities/u-font-style.common.inline.scss +9 -0
- package/src/03-utilities/u-font-weight.common.inline.scss +50 -12
- package/src/03-utilities/u-height.common.inline.scss +38 -8
- package/src/03-utilities/u-left.common.inline.scss +7 -0
- package/src/03-utilities/u-letter-spacing.common.inline.scss +11 -0
- package/src/03-utilities/u-line-height.common.inline.scss +49 -13
- package/src/03-utilities/u-list-style.common.async.scss +3 -0
- package/src/03-utilities/u-margin.common.inline.scss +182 -47
- package/src/03-utilities/u-max-width.common.inline.scss +25 -0
- package/src/03-utilities/u-opacity.common.inline.scss +3 -0
- package/src/03-utilities/u-order.common.inline.scss +29 -2
- package/src/03-utilities/u-overflow.common.inline.scss +14 -2
- package/src/03-utilities/u-padding.common.inline.scss +157 -52
- package/src/03-utilities/u-position.common.inline.scss +11 -0
- package/src/03-utilities/u-text-align.common.inline.scss +27 -4
- package/src/03-utilities/u-text-decoration.common.inline.scss +11 -0
- package/src/03-utilities/u-text-transform.common.inline.scss +14 -2
- package/src/03-utilities/u-top.common.inline.scss +7 -0
- package/src/03-utilities/u-transform.common.inline.scss +12 -0
- package/src/03-utilities/u-vertical-align.common.inline.scss +7 -0
- package/src/03-utilities/u-whitespace.common.inline.scss +1 -1
- package/src/03-utilities/u-width.common.inline.scss +198 -12
- package/src/04-js/README.md +5 -0
- package/src/04-js/js-Collapsible.common.inline.scss +15 -0
- package/src/04-js/js-ExpandableSearch.common.async.scss +33 -0
- package/src/04-js/js-Flickity.common.async.scss +91 -0
- package/src/04-js/js-Header.common.inline.scss +73 -0
- package/src/04-js/js-MegaMenu.common.inline.scss +50 -0
- package/src/04-js/js-MobileHeightToggle.common.inline.scss +7 -5
- package/src/04-js/js-PopOver.common.async.scss +13 -0
- package/src/04-js/js-Tooltip.common.inline.scss +17 -0
- package/src/04-js/js-VideoShowcase.common.inline.scss +33 -0
- package/src/04-js/partials/expandable-search.scss +202 -0
- package/src/04-js/partials/flickity.scss +149 -0
- package/src/_generated/_a-font.scss +1027 -0
- package/src/larva-ui/prism.scss +127 -0
- package/src/setup.scss +7 -0
- package/stylelint.config.js +10 -11
- package/build/css/algorithms.common.async.scss +0 -36
- package/build/css/algorithms.common.inline.scss +0 -274
- package/build/css/generic.common.inline.scss +0 -66
- package/build/css/js.common.inline.scss +0 -9
- package/build/css/utilities.common.async.scss +0 -57
- package/build/css/utilities.common.inline.scss +0 -473
- package/holding/a-truncate-children/README.md +0 -3
- package/holding/a-truncate-children/a-truncate-children.browser-test.js +0 -104
- package/holding/a-truncate-children/a-truncate-children.css +0 -4
- package/holding/a-truncate-children/a-truncate-children.html +0 -15
- package/holding/a-truncate-children/a-truncate-children.scss +0 -5
- package/src/01-generic/config.common.inline.scss +0 -18
- package/src/02-algorithms/.DS_Store +0 -0
- package/src/02-algorithms/a-glue/index.js +0 -1
- package/src/02-algorithms/a-icon/a-icon.html +0 -20
- package/src/02-algorithms/a-unstyle-link/a-unstyle-link.common.async.scss +0 -5
- package/src/03-utilities/u-background.common.async.scss +0 -28
|
@@ -1,20 +1,147 @@
|
|
|
1
|
-
#
|
|
1
|
+
# a-grid
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
e.g. desktop-xl grids are at the very end, breakpoint-less grids at
|
|
5
|
-
the top.
|
|
3
|
+
This utility generator is for creating simple grids. It uses a CSS Grid with a custom property to update the grid columns, and provides a flexbox fallback for older browsers. It supports flexible values for number of columns in the grid, grid items spanning multiple columns, and breakpoints for both.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
a specific number of columns. By default, grid items will each span
|
|
9
|
-
a single column. Apply a trailing comma to the list of spans.
|
|
5
|
+
## Available Classes
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
class to initiate a single column grid, then additional utility classes to
|
|
13
|
-
adjust the grid e.g.
|
|
7
|
+
Reference the `$grids` list in packages/larva-css/src/02-algorithms/a-grid/a-grid.common.inline.scss to see which grids are available from Larva CSS.
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
## Algorithm Source
|
|
16
10
|
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
Here is an example of the algorithm accommodating a two column grid that changes to four columns at desktop:
|
|
12
|
+
```
|
|
13
|
+
.lrv-a-grid {
|
|
14
|
+
--cols: 1;
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
display: grid;
|
|
17
|
+
grid-gap: 1.25rem;
|
|
18
|
+
grid-template-columns: repeat( var( --cols ), minmax( 0, 1fr ) );
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lrv-a-cols2 {
|
|
22
|
+
--cols: 2;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@media( min-width: $screen-desktop ) {
|
|
26
|
+
|
|
27
|
+
.lrv-a-cols4\@desktop {
|
|
28
|
+
--cols: 4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Use in a project:
|
|
35
|
+
|
|
36
|
+
To add new grids in a project, create a-grid.{chunk}.inline.scss and add the following:
|
|
37
|
+
|
|
38
|
+
```langauge-scss
|
|
39
|
+
$grids: (
|
|
40
|
+
(
|
|
41
|
+
columns: 4,
|
|
42
|
+
spans: ( 2, 3, ),
|
|
43
|
+
breakpoint: tablet,
|
|
44
|
+
),
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
@include a-grid( $grids );
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
This will output something like:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
@media min-width( ${TABLET} ) {
|
|
54
|
+
|
|
55
|
+
.a-cols4\@tablet {
|
|
56
|
+
--cols: 4;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.a-span\@tablet {
|
|
60
|
+
grid-column: span 2;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.a-span3\@tablet {
|
|
64
|
+
grid-column: span 3;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`.lrv-a-cols4@tablet` must be applied along with `.lrv-a-grid` to set up the main part of the grid.
|
|
70
|
+
|
|
71
|
+
A few important things to note:
|
|
72
|
+
|
|
73
|
+
* In the mixin, **grids must be in order of media queries to maintain the cascade**, e.g. desktop-xl grids are at the very end, breakpoint-less grids at the top.
|
|
74
|
+
* By default, grid items will each span
|
|
75
|
+
a single column.
|
|
76
|
+
* Apply a trailing comma to the list of spans, and in general, use trailing commas in Sass lists.
|
|
77
|
+
* It is best practice to apply `lrv-a-grid-item` to child elements of an `a-grid` for both readability and a few edge cases, but note that some code-bases have not done this.
|
|
78
|
+
|
|
79
|
+
## Examples
|
|
80
|
+
|
|
81
|
+
If mobile is two columns:
|
|
82
|
+
+----+----+
|
|
83
|
+
| | |
|
|
84
|
+
| | |
|
|
85
|
+
+---------+
|
|
86
|
+
| | |
|
|
87
|
+
| | |
|
|
88
|
+
+----+----+
|
|
89
|
+
|
|
90
|
+
And desktop is four columns:
|
|
91
|
+
+------+------+------+------+
|
|
92
|
+
| | | | |
|
|
93
|
+
| | | | |
|
|
94
|
+
+------+------+------+------+
|
|
95
|
+
|
|
96
|
+
The markup would be:
|
|
97
|
+
|
|
98
|
+
```language-html
|
|
99
|
+
<div class="lrv-a-grid lrv-a-cols2 lrv-a-cols4@desktop">
|
|
100
|
+
<div class="lrv-a-grid-item"></div>
|
|
101
|
+
<div class="lrv-a-grid-item"></div>
|
|
102
|
+
<div class="lrv-a-grid-item"></div>
|
|
103
|
+
<div class="lrv-a-grid-item"></div>
|
|
104
|
+
</div>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
If mobile is one column:
|
|
108
|
+
+--------+
|
|
109
|
+
|////////|
|
|
110
|
+
|////////|
|
|
111
|
+
+--------+
|
|
112
|
+
| |
|
|
113
|
+
+--------+
|
|
114
|
+
| |
|
|
115
|
+
+--------+
|
|
116
|
+
|
|
117
|
+
And desktop is a four column grid, with the first element spanning two columns:
|
|
118
|
+
+------+------+------+------+
|
|
119
|
+
|/////////////| | |
|
|
120
|
+
|/////////////| | |
|
|
121
|
+
+------+------+------+------+
|
|
122
|
+
|
|
123
|
+
```language-html
|
|
124
|
+
<div class="lrv-a-grid lrv-a-cols4@desktop">
|
|
125
|
+
<div class="lrv-a-grid-item lrv-a-span2@desktop"></div>
|
|
126
|
+
<div class="lrv-a-grid-item"></div>
|
|
127
|
+
<div class="lrv-a-grid-item"></div>
|
|
128
|
+
</div>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Extendable?
|
|
132
|
+
|
|
133
|
+
**Do not extend `a-grid`**. Use utilities or create a separate algorithm.
|
|
134
|
+
|
|
135
|
+
The class name `a-grid` should _only_ be used for declarations that apply to this basic, equal column CSS grid, and that **does not include grid-gap**. Any adjustments in `grid-gap` or specific grid configurations beyond equal columns should be done with `u-grid` utilities.
|
|
136
|
+
|
|
137
|
+
For example, to apply a larger grid-gap to an `a-grid`, you could add this to `03-utilities/u-grid.{chunk}.inline.scss`:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
.u-grid-gap-2\@desktop {
|
|
141
|
+
@include pmc-breakpoint( desktop ) {
|
|
142
|
+
grid-gap: $spacer-2;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
And apply `u-grid-gap-2@desktop` to the same element as `lrv-a-grid`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
@import '
|
|
1
|
+
@import 'setup';
|
|
2
2
|
|
|
3
|
-
.
|
|
3
|
+
.lrv-a-grid {
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-wrap: wrap;
|
|
6
6
|
align-items: start;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.
|
|
18
|
-
// Remove flex
|
|
17
|
+
.lrv-a-grid-item {
|
|
18
|
+
// Remove flex characteristics to honor flex-basis value.
|
|
19
19
|
flex: none;
|
|
20
20
|
padding: 0.625rem;
|
|
21
21
|
|
|
@@ -30,6 +30,11 @@ $grids: (
|
|
|
30
30
|
),
|
|
31
31
|
(
|
|
32
32
|
columns: 3,
|
|
33
|
+
spans: ( 2 ),
|
|
34
|
+
),
|
|
35
|
+
(
|
|
36
|
+
columns: 2,
|
|
37
|
+
breakpoint: tablet,
|
|
33
38
|
),
|
|
34
39
|
(
|
|
35
40
|
columns: 3,
|
|
@@ -41,6 +46,49 @@ $grids: (
|
|
|
41
46
|
spans: ( 2, 3, ),
|
|
42
47
|
breakpoint: tablet,
|
|
43
48
|
),
|
|
49
|
+
(
|
|
50
|
+
columns: 3,
|
|
51
|
+
breakpoint: desktop,
|
|
52
|
+
),
|
|
53
|
+
(
|
|
54
|
+
columns: 2,
|
|
55
|
+
breakpoint: desktop,
|
|
56
|
+
),
|
|
57
|
+
(
|
|
58
|
+
columns: 2,
|
|
59
|
+
breakpoint: desktop-xl,
|
|
60
|
+
),
|
|
61
|
+
(
|
|
62
|
+
columns: 4,
|
|
63
|
+
spans: ( 2 ),
|
|
64
|
+
breakpoint: desktop,
|
|
65
|
+
),
|
|
66
|
+
(
|
|
67
|
+
columns: 4,
|
|
68
|
+
spans: ( 3 ),
|
|
69
|
+
breakpoint: desktop,
|
|
70
|
+
),
|
|
71
|
+
(
|
|
72
|
+
columns: 4,
|
|
73
|
+
spans: ( 3 ),
|
|
74
|
+
breakpoint: desktop-xl,
|
|
75
|
+
),
|
|
76
|
+
(
|
|
77
|
+
columns: 5,
|
|
78
|
+
breakpoint: desktop,
|
|
79
|
+
),
|
|
44
80
|
);
|
|
45
81
|
|
|
46
|
-
@include
|
|
82
|
+
@include a-grid( $grids, $NAMESPACE: 'lrv-' );
|
|
83
|
+
|
|
84
|
+
.lrv-a-grid-first-child-span-all\@mobile-max {
|
|
85
|
+
|
|
86
|
+
@include pmc-breakpoint( mobile-max ) {
|
|
87
|
+
|
|
88
|
+
& > *:first-child {
|
|
89
|
+
@supports ( display: grid ) {
|
|
90
|
+
grid-column: 1 / -1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
7
|
-
<link rel="stylesheet" href="
|
|
7
|
+
<link rel="stylesheet" href="../../../build/css/algorithms.common.inline.css">
|
|
8
8
|
<title>Document</title>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
|
-
<div class="
|
|
11
|
+
<div class="lrv-a-grid lrv-a-cols2">
|
|
12
12
|
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam omnis qui minima aperiam aspernatur distinctio nam neque nostrum nesciunt laborum? Ad dicta quam possimus voluptates velit perferendis vel sed itaque!</div>
|
|
13
13
|
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam omnis qui minima aperiam aspernatur distinctio nam neque nostrum nesciunt laborum? Ad dicta quam possimus voluptates velit perferendis vel sed itaque!</div>
|
|
14
14
|
</div>
|
|
15
15
|
<hr>
|
|
16
|
-
<div class="
|
|
16
|
+
<div class="lrv-a-grid lrv-a-cols3">
|
|
17
17
|
<div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam omnis qui minima aperiam aspernatur distinctio nam neque nostrum nesciunt laborum? Ad dicta quam possimus voluptates velit perferendis vel sed itaque!</div>
|
|
18
|
-
<div class="
|
|
18
|
+
<div class="lrv-a-grid-item lrv-a-span2">Lorem ipsum dolor sit amet consectetur adipisicing elit. Totam omnis qui minima aperiam aspernatur distinctio nam neque nostrum nesciunt laborum? Ad dicta quam possimus voluptates velit perferendis vel sed itaque!</div>
|
|
19
19
|
</div>
|
|
20
20
|
</body>
|
|
21
21
|
</html>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
@import 'setup';
|
|
2
|
+
|
|
3
|
+
@mixin _a-hidden {
|
|
4
|
+
// stylelint-disable declaration-no-important
|
|
5
|
+
display: none !important;
|
|
6
|
+
// stylelint-enable declaration-no-important
|
|
7
|
+
height: 0;
|
|
8
|
+
width: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.lrv-a-hidden {
|
|
12
|
+
@include _a-hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.lrv-a-hidden\@mobile-max {
|
|
16
|
+
@include pmc-breakpoint( mobile-max ) {
|
|
17
|
+
@include _a-hidden;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lrv-a-hidden\@desktop-max {
|
|
22
|
+
@include pmc-breakpoint( desktop-max ) {
|
|
23
|
+
@include _a-hidden;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.lrv-a-hidden\@desktop-xl-max {
|
|
28
|
+
@include pmc-breakpoint( desktop-xl-max ) {
|
|
29
|
+
@include _a-hidden;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.lrv-a-hidden\@tablet {
|
|
34
|
+
@include pmc-breakpoint( tablet ) {
|
|
35
|
+
@include _a-hidden;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.lrv-a-hidden\@desktop {
|
|
40
|
+
@include pmc-breakpoint( desktop ) {
|
|
41
|
+
@include _a-hidden;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
@include pmc-breakpoint( tablet ) {
|
|
4
4
|
|
|
5
|
-
.
|
|
5
|
+
.lrv-a-hover-dropup\@tablet {
|
|
6
6
|
position: relative;
|
|
7
7
|
min-width: 14rem;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.
|
|
10
|
+
.lrv-a-hover-dropup-trigger\@tablet {
|
|
11
11
|
cursor: pointer;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
.
|
|
14
|
+
.lrv-a-hover-dropup-target\@tablet {
|
|
15
15
|
width: 100%;
|
|
16
16
|
visibility: hidden;
|
|
17
17
|
opacity: 0;
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
max-height: 8.438rem;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
.
|
|
28
|
-
.
|
|
27
|
+
.lrv-a-hover-dropup\@tablet:hover .lrv-a-hover-dropup-target\@tablet,
|
|
28
|
+
.lrv-a-hover-dropup\@tablet:focus .lrv-a-hover-dropup-target\@tablet {
|
|
29
29
|
visibility: visible;
|
|
30
30
|
opacity: 1;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
// Transform a-icon
|
|
34
|
-
.
|
|
35
|
-
.
|
|
34
|
+
.lrv-a-hover-dropup\@tablet:hover .lrv-a-icon-arrow-down::after,
|
|
35
|
+
.lrv-a-hover-dropup\@tablet:focus .lrv-a-icon-arrow-down {
|
|
36
36
|
--a-icon-transform: rotate(180deg);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div style="height:300px"></div>
|
|
12
|
-
<div class="
|
|
13
|
-
<div class="
|
|
14
|
-
<div class="
|
|
12
|
+
<div class="lrv-a-hover-dropup@tablet">
|
|
13
|
+
<div class="lrv-a-hover-dropup-trigger@tablet">Hover me to show the list above</div>
|
|
14
|
+
<div class="lrv-a-hover-dropup-target@tablet">
|
|
15
15
|
<ul>
|
|
16
16
|
<li>List item 1</li>
|
|
17
17
|
<li>List item 2</li>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@import 'setup';
|
|
2
|
+
|
|
3
|
+
.lrv-a-hover-effect {
|
|
4
|
+
transition: var( --a-hover-effect-property, $transition-hover );
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.lrv-a-hover-effect--fade {
|
|
8
|
+
transform: translate3d( 0px, 0px, 0px ); // stylelint-disable-line unit-disallowed-list
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.lrv-a-hover-effect--fade:hover {
|
|
12
|
+
--a-hover-effect-property: opacity;
|
|
13
|
+
|
|
14
|
+
opacity: 0.5;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.lrv-a-hover-effect--underline {
|
|
18
|
+
transform: translate3d( 0px, 0px, 0px ); // stylelint-disable-line unit-disallowed-list
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lrv-a-hover-effect--underline:hover {
|
|
22
|
+
--a-hover-effect-property: border-bottom;
|
|
23
|
+
|
|
24
|
+
border-bottom: 1px solid currentColor;
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
7
|
+
<title>Document</title>
|
|
8
|
+
<link rel="stylesheet" href="../../../build/css/algorithms.common.async.css">
|
|
9
|
+
<link rel="stylesheet" href="../../../build/css/utilities.common.inline.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div class="lrv-a-hover-effect lrv-a-hover-effect--fade lrv-u-display-inline-block">
|
|
13
|
+
<img src="http://placehold.it/300x300" alt="">
|
|
14
|
+
</div>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -1,11 +1,36 @@
|
|
|
1
|
-
@import '
|
|
1
|
+
@import 'setup';
|
|
2
2
|
|
|
3
|
-
.a-icon-after-remove\@tablet::after {
|
|
3
|
+
.lrv-a-icon-after-remove\@tablet::after {
|
|
4
4
|
@include pmc-breakpoint( tablet ) {
|
|
5
5
|
display: none;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.a-icon-invert {
|
|
9
|
+
.lrv-a-icon-invert {
|
|
10
10
|
--a-icon-filter: invert(1);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.lrv-a-icon-arrow-left,
|
|
14
|
+
.lrv-a-icon-arrow-right,
|
|
15
|
+
.lrv-a-icon-arrow-down,
|
|
16
|
+
.lrv-a-icon-arrow-up {
|
|
17
|
+
--a-icon-url: url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 8'%3E%3Cpath d='M13.7 1.7l-6 6c-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3l-6-6C-.1 1.3-.1.7.3.3s1-.4 1.4 0L7 5.6 12.3.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4z'/%3E%3C/svg%3E" );
|
|
18
|
+
--a-icon-height: #{ $font-size-12 };
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.lrv-a-icon-arrow-right {
|
|
22
|
+
--a-icon-transform: rotate(-90deg);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.lrv-a-icon-arrow-left {
|
|
26
|
+
--a-icon-transform: rotate(90deg);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.lrv-a-icon-envelope {
|
|
30
|
+
--a-icon-url: url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='M.77.945C.636.875.406.752.356.605.269.357.362.258.731.258h12.723c.37 0 .462.096.376.349-.05.143-.28.27-.416.34-.366.192-5.45 2.964-5.64 3.064-.19.1-.382.146-.681.146-.3 0-.493-.047-.683-.146C6.22 3.91 1.137 1.138.77.945zm12.934.15c.296-.15.276.023.276.163v6.82c0 .307-.39.696-.716.696H.921c-.326 0-.782-.386-.782-.695V1.258c0-.136.016-.313.31-.163.272.14 2.747 1.883 4.368 2.931L2.085 7.104c-.066.066-.096.15-.056.186.04.04.13.02.196-.046l3.28-2.769c.496.32.842.54.905.573.257.13.436.146.683.146.246 0 .425-.017.682-.146.06-.034.409-.253.905-.573l3.28 2.769c.07.063.156.083.196.046.037-.04.007-.12-.06-.186L9.363 4.026c1.62-1.048 4.069-2.791 4.342-2.931z'/%3E%3C/svg%3E" );
|
|
31
|
+
--a-icon-height: #{ $font-size-10 };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.lrv-a-icon-search {
|
|
35
|
+
--a-icon-url: url( "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Cpath d='M5.228 11.335h.79l.28-.27a6.471 6.471 0 01-1.57-4.23 6.5 6.5 0 116.5 6.5c-1.61 0-3.09-.59-4.23-1.57l-.27.28v.79l-5 4.99-1.49-1.49 4.99-5zm6 0c2.49 0 4.5-2.01 4.5-4.5s-2.01-4.5-4.5-4.5-4.5 2.01-4.5 4.5 2.01 4.5 4.5 4.5z' fill-rule='evenodd'/%3E%3C/svg%3E" );
|
|
11
36
|
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
@import '
|
|
2
|
-
@import '@penskemediacorp/larva-scss/dist/tools';
|
|
3
|
-
|
|
4
|
-
$ICONS_BUILD_PATH: '/svgs';
|
|
1
|
+
@import 'setup';
|
|
5
2
|
|
|
6
3
|
@mixin _a-icon-base {
|
|
7
4
|
content: var(--a-icon-content, '');
|
|
@@ -12,6 +9,7 @@ $ICONS_BUILD_PATH: '/svgs';
|
|
|
12
9
|
height: var(--a-icon-height, #{ $spacer-1 });
|
|
13
10
|
width: var(--a-icon-width, #{ $spacer-1 });
|
|
14
11
|
transform: var( --a-icon-transform, none );
|
|
12
|
+
flex-shrink: 0;
|
|
15
13
|
}
|
|
16
14
|
|
|
17
15
|
@mixin _a-icon-base-pseudo( $pseudo-el ) {
|
|
@@ -31,7 +29,7 @@ $ICONS_BUILD_PATH: '/svgs';
|
|
|
31
29
|
height: initial;
|
|
32
30
|
width: initial;
|
|
33
31
|
// background okay for reset.
|
|
34
|
-
background: initial; // stylelint-disable-line property-
|
|
32
|
+
background: initial; // stylelint-disable-line property-disallowed-list
|
|
35
33
|
font-size: inherit;
|
|
36
34
|
color: currentColor;
|
|
37
35
|
margin: 0;
|
|
@@ -40,50 +38,31 @@ $ICONS_BUILD_PATH: '/svgs';
|
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
40
|
|
|
43
|
-
.a-icon {
|
|
41
|
+
.lrv-a-icon {
|
|
44
42
|
@include _a-icon-base();
|
|
45
43
|
}
|
|
46
44
|
|
|
47
|
-
.a-icon-before {
|
|
45
|
+
.lrv-a-icon-before {
|
|
48
46
|
@include _a-icon-base-pseudo( before ) {
|
|
49
47
|
margin-right: $spacer-050;
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
|
|
53
|
-
.a-icon-after {
|
|
51
|
+
.lrv-a-icon-after {
|
|
54
52
|
@include _a-icon-base-pseudo( after ) {
|
|
55
53
|
margin-left: $spacer-050;
|
|
56
54
|
}
|
|
57
55
|
}
|
|
58
56
|
|
|
59
|
-
.a-icon-after\:margin-l-auto::after {
|
|
57
|
+
.lrv-a-icon-after\:margin-l-auto::after {
|
|
60
58
|
margin-left: auto;
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
// Specific Icons
|
|
64
62
|
|
|
65
|
-
.a-icon-
|
|
66
|
-
.a-icon-
|
|
67
|
-
.a-icon-
|
|
68
|
-
.a-icon-arrow-up {
|
|
69
|
-
--a-icon-url: url( #{$ICONS_BUILD_PATH + '/stack/svg/sprite.stack.svg#arrow'} );
|
|
70
|
-
--a-icon-height: #{ $font-size-12 };
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
.a-icon-arrow-right {
|
|
74
|
-
--a-icon-transform: rotate(-90deg);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.a-icon-arrow-left {
|
|
78
|
-
--a-icon-transform: rotate(90deg);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.a-icon-envelope {
|
|
82
|
-
--a-icon-url: url( #{$ICONS_BUILD_PATH + '/stack/svg/sprite.stack.svg#envelope'} );
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.a-icon-forward-slash,
|
|
86
|
-
.a-icon-bullet {
|
|
63
|
+
.lrv-a-icon-forward-slash,
|
|
64
|
+
.lrv-a-icon-bullet,
|
|
65
|
+
.lrv-a-icon-vertical-pipe {
|
|
87
66
|
@include _a-icon-reset( before ) {
|
|
88
67
|
padding-right: $spacer-050;
|
|
89
68
|
};
|
|
@@ -93,51 +72,50 @@ $ICONS_BUILD_PATH: '/svgs';
|
|
|
93
72
|
};
|
|
94
73
|
}
|
|
95
74
|
|
|
96
|
-
.a-icon-forward-slash {
|
|
75
|
+
.lrv-a-icon-forward-slash {
|
|
97
76
|
--a-icon-content: '/';
|
|
98
77
|
}
|
|
99
78
|
|
|
100
|
-
.a-icon-bullet {
|
|
79
|
+
.lrv-a-icon-bullet {
|
|
101
80
|
--a-icon-content: '\02022';
|
|
102
81
|
}
|
|
103
82
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// }
|
|
83
|
+
.lrv-a-icon-vertical-pipe {
|
|
84
|
+
--a-icon-content: '\007C';
|
|
85
|
+
padding-right: $spacer-025;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.lrv-a-icon-after-arrow-top-left {
|
|
89
|
+
&::before {
|
|
90
|
+
position: absolute;
|
|
91
|
+
content: '';
|
|
92
|
+
display: block;
|
|
93
|
+
width: pmc-rem(24);
|
|
94
|
+
height: pmc-rem(24);
|
|
95
|
+
left: 13%;
|
|
96
|
+
border: 2px solid map-get( $TOKENS-MAP, color-black );
|
|
97
|
+
border-right-color: transparent;
|
|
98
|
+
border-bottom-color: transparent;
|
|
99
|
+
transform: rotate( 45deg );
|
|
100
|
+
top: pmc-rem(-12);
|
|
101
|
+
background-color: $color-white;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.lrv-a-icon-after-arrow-top-right {
|
|
106
|
+
&::before {
|
|
107
|
+
position: absolute;
|
|
108
|
+
content: '';
|
|
109
|
+
display: block;
|
|
110
|
+
width: pmc-rem(24);
|
|
111
|
+
height: pmc-rem(24);
|
|
112
|
+
right: 13%;
|
|
113
|
+
border: 2px solid map-get( $TOKENS-MAP, color-black );
|
|
114
|
+
border-right-color: transparent;
|
|
115
|
+
border-bottom-color: transparent;
|
|
116
|
+
transform: rotate( 45deg );
|
|
117
|
+
top: pmc-rem(-12);
|
|
118
|
+
background-color: $color-white;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@import '@penskemediacorp/larva-scss/dist/tools';
|
|
2
|
+
|
|
3
|
+
@mixin _a-screen-reader-only-base {
|
|
4
|
+
border: 0;
|
|
5
|
+
clip: rect(1px, 1px, 1px, 1px); // stylelint-disable-line unit-disallowed-list
|
|
6
|
+
clip-path: inset(50%);
|
|
7
|
+
height: 1px; // stylelint-disable-line unit-disallowed-list
|
|
8
|
+
margin: -1px; // stylelint-disable-line unit-disallowed-list
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
padding: 0;
|
|
11
|
+
position: absolute;
|
|
12
|
+
width: 1px; // stylelint-disable-line unit-disallowed-list
|
|
13
|
+
word-wrap: normal;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.lrv-a-screen-reader-only {
|
|
17
|
+
@include _a-screen-reader-only-base;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.lrv-a-screen-reader-only\@mobile-max {
|
|
21
|
+
@include pmc-breakpoint( mobile-max ) {
|
|
22
|
+
@include _a-screen-reader-only-base();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.lrv-a-screen-reader-only\@desktop-xl {
|
|
27
|
+
@include pmc-breakpoint( desktop-xl ) {
|
|
28
|
+
@include _a-screen-reader-only-base();
|
|
29
|
+
}
|
|
30
|
+
}
|