stylelint-plugin-grid 1.0.1 → 1.0.3

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 (72) hide show
  1. package/README.md +30 -22
  2. package/dist/_internal/grid-placement-analysis.d.ts +20 -0
  3. package/dist/_internal/grid-placement-analysis.d.ts.map +1 -0
  4. package/dist/_internal/grid-placement-analysis.js +59 -0
  5. package/dist/_internal/grid-placement-analysis.js.map +1 -0
  6. package/dist/_internal/grid-template-analysis.d.ts +2 -0
  7. package/dist/_internal/grid-template-analysis.d.ts.map +1 -1
  8. package/dist/_internal/grid-template-analysis.js +4 -0
  9. package/dist/_internal/grid-template-analysis.js.map +1 -1
  10. package/dist/_internal/rules-registry.d.ts.map +1 -1
  11. package/dist/_internal/rules-registry.js +16 -0
  12. package/dist/_internal/rules-registry.js.map +1 -1
  13. package/dist/plugin.cjs +893 -285
  14. package/dist/plugin.cjs.map +4 -4
  15. package/dist/rules/no-conflicting-placement.d.ts +8 -0
  16. package/dist/rules/no-conflicting-placement.d.ts.map +1 -0
  17. package/dist/rules/no-conflicting-placement.js +70 -0
  18. package/dist/rules/no-conflicting-placement.js.map +1 -0
  19. package/dist/rules/no-ineffective-container-properties.d.ts +8 -0
  20. package/dist/rules/no-ineffective-container-properties.d.ts.map +1 -0
  21. package/dist/rules/no-ineffective-container-properties.js +97 -0
  22. package/dist/rules/no-ineffective-container-properties.js.map +1 -0
  23. package/dist/rules/no-invalid-repeat-count.d.ts +8 -0
  24. package/dist/rules/no-invalid-repeat-count.d.ts.map +1 -0
  25. package/dist/rules/no-invalid-repeat-count.js +75 -0
  26. package/dist/rules/no-invalid-repeat-count.js.map +1 -0
  27. package/dist/rules/no-invalid-span.d.ts +8 -0
  28. package/dist/rules/no-invalid-span.d.ts.map +1 -0
  29. package/dist/rules/no-invalid-span.js +49 -0
  30. package/dist/rules/no-invalid-span.js.map +1 -0
  31. package/dist/rules/no-reversed-placement-lines.d.ts +8 -0
  32. package/dist/rules/no-reversed-placement-lines.d.ts.map +1 -0
  33. package/dist/rules/no-reversed-placement-lines.js +129 -0
  34. package/dist/rules/no-reversed-placement-lines.js.map +1 -0
  35. package/dist/rules/no-zero-grid-lines.d.ts +8 -0
  36. package/dist/rules/no-zero-grid-lines.d.ts.map +1 -0
  37. package/dist/rules/no-zero-grid-lines.js +48 -0
  38. package/dist/rules/no-zero-grid-lines.js.map +1 -0
  39. package/dist/rules/prefer-minmax-zero-fr.d.ts +8 -0
  40. package/dist/rules/prefer-minmax-zero-fr.d.ts.map +1 -0
  41. package/dist/rules/prefer-minmax-zero-fr.js +56 -0
  42. package/dist/rules/prefer-minmax-zero-fr.js.map +1 -0
  43. package/dist/rules/require-explicit-tracks-with-areas.d.ts +12 -0
  44. package/dist/rules/require-explicit-tracks-with-areas.d.ts.map +1 -0
  45. package/dist/rules/require-explicit-tracks-with-areas.js +65 -0
  46. package/dist/rules/require-explicit-tracks-with-areas.js.map +1 -0
  47. package/docs/rules/configs/grid-all.md +23 -15
  48. package/docs/rules/configs/grid-recommended.md +16 -10
  49. package/docs/rules/configs/index.md +23 -15
  50. package/docs/rules/consistent-area-naming.md +5 -5
  51. package/docs/rules/getting-started.md +8 -8
  52. package/docs/rules/no-conflicting-placement.md +59 -0
  53. package/docs/rules/no-dense-auto-flow.md +8 -8
  54. package/docs/rules/no-ineffective-container-properties.md +63 -0
  55. package/docs/rules/no-invalid-areas.md +11 -11
  56. package/docs/rules/no-invalid-auto-repeat.md +8 -8
  57. package/docs/rules/no-invalid-minmax.md +8 -8
  58. package/docs/rules/no-invalid-repeat-count.md +56 -0
  59. package/docs/rules/no-invalid-span.md +55 -0
  60. package/docs/rules/no-mismatched-template-rows.md +8 -8
  61. package/docs/rules/no-overlapping-areas.md +4 -4
  62. package/docs/rules/no-reversed-placement-lines.md +56 -0
  63. package/docs/rules/no-unknown-areas.md +4 -4
  64. package/docs/rules/no-unused-areas.md +5 -5
  65. package/docs/rules/no-zero-grid-lines.md +53 -0
  66. package/docs/rules/prefer-gap-properties.md +10 -10
  67. package/docs/rules/prefer-minmax-zero-fr.md +49 -0
  68. package/docs/rules/require-explicit-rows-with-column-flow.md +10 -10
  69. package/docs/rules/require-explicit-tracks-with-areas.md +80 -0
  70. package/docs/rules/validate-area-shapes.md +10 -10
  71. package/docs/rules/validate-track-counts.md +10 -10
  72. package/package.json +15 -7
@@ -12,13 +12,13 @@ length, or a percentage instead.
12
12
 
13
13
  ```css
14
14
  .layout {
15
- grid-template-columns: minmax(1fr, 20rem) 2fr;
15
+ grid-template-columns: minmax(1fr, 20rem) 2fr;
16
16
  }
17
17
  ```
18
18
 
19
19
  ```css
20
20
  .layout {
21
- grid-auto-rows: minmax(0.5fr, auto);
21
+ grid-auto-rows: minmax(0.5fr, auto);
22
22
  }
23
23
  ```
24
24
 
@@ -26,13 +26,13 @@ length, or a percentage instead.
26
26
 
27
27
  ```css
28
28
  .layout {
29
- grid-template-columns: minmax(0, 1fr) minmax(12rem, 20rem);
29
+ grid-template-columns: minmax(0, 1fr) minmax(12rem, 20rem);
30
30
  }
31
31
  ```
32
32
 
33
33
  ```css
34
34
  .layout {
35
- grid-auto-rows: minmax(10rem, auto);
35
+ grid-auto-rows: minmax(10rem, auto);
36
36
  }
37
37
  ```
38
38
 
@@ -40,10 +40,10 @@ length, or a percentage instead.
40
40
 
41
41
  ```js
42
42
  export default {
43
- plugins: ["stylelint-plugin-grid"],
44
- rules: {
45
- "grid/no-invalid-minmax": true
46
- }
43
+ plugins: ["stylelint-plugin-grid"],
44
+ rules: {
45
+ "grid/no-invalid-minmax": true,
46
+ },
47
47
  };
48
48
  ```
49
49
 
@@ -0,0 +1,56 @@
1
+ # no-invalid-repeat-count
2
+
3
+ Disallow invalid fixed repeat counts in CSS Grid track templates.
4
+
5
+ The first argument to a fixed `repeat()` must be a positive integer. Counts such
6
+ as `0`, negative numbers, and decimals make the track template invalid. This
7
+ rule leaves `auto-fit`, `auto-fill`, and dynamic values to the rules that own
8
+ those cases.
9
+
10
+ ## Incorrect
11
+
12
+ ```css
13
+ .layout {
14
+ grid-template-columns: repeat(0, 1fr);
15
+ }
16
+ ```
17
+
18
+ ```css
19
+ .layout {
20
+ grid-template-rows: repeat(2.5, auto);
21
+ }
22
+ ```
23
+
24
+ ## Correct
25
+
26
+ ```css
27
+ .layout {
28
+ grid-template-columns: repeat(3, minmax(0, 1fr));
29
+ }
30
+ ```
31
+
32
+ ```css
33
+ .layout {
34
+ grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
35
+ }
36
+ ```
37
+
38
+ ## Stylelint Config
39
+
40
+ ```js
41
+ export default {
42
+ plugins: ["stylelint-plugin-grid"],
43
+ rules: {
44
+ "grid/no-invalid-repeat-count": true,
45
+ },
46
+ };
47
+ ```
48
+
49
+ ## Related Rules
50
+
51
+ - [`no-invalid-auto-repeat`](./no-invalid-auto-repeat.md) checks track sizes
52
+ inside `repeat(auto-fit, ...)` and `repeat(auto-fill, ...)`.
53
+ - [`validate-track-counts`](./validate-track-counts.md) compares expanded track
54
+ counts with named area templates.
55
+ - [`grid-recommended`](./configs/grid-recommended.md) enables this rule by
56
+ default.
@@ -0,0 +1,55 @@
1
+ # no-invalid-span
2
+
3
+ Disallow non-positive `span` counts in CSS Grid placement declarations.
4
+
5
+ Grid spans must move across at least one track. Values such as `span 0` and
6
+ `span -1` cannot place an item usefully and usually make the declaration
7
+ invalid or ignored.
8
+
9
+ ## Incorrect
10
+
11
+ ```css
12
+ .item {
13
+ grid-column: span 0 / span 2;
14
+ }
15
+ ```
16
+
17
+ ```css
18
+ .item {
19
+ grid-row-start: span -1;
20
+ }
21
+ ```
22
+
23
+ ## Correct
24
+
25
+ ```css
26
+ .item {
27
+ grid-column: span 2 / sidebar-end;
28
+ }
29
+ ```
30
+
31
+ ```css
32
+ .item {
33
+ grid-row-start: span var(--rows);
34
+ }
35
+ ```
36
+
37
+ ## Stylelint Config
38
+
39
+ ```js
40
+ export default {
41
+ plugins: ["stylelint-plugin-grid"],
42
+ rules: {
43
+ "grid/no-invalid-span": true,
44
+ },
45
+ };
46
+ ```
47
+
48
+ ## Related Rules
49
+
50
+ - [`no-zero-grid-lines`](./no-zero-grid-lines.md) rejects line `0` in placement
51
+ values.
52
+ - [`no-reversed-placement-lines`](./no-reversed-placement-lines.md) checks
53
+ numeric placement ranges.
54
+ - [`grid-recommended`](./configs/grid-recommended.md) enables this rule by
55
+ default.
@@ -7,10 +7,10 @@ count when both declarations appear in the same block.
7
7
 
8
8
  ```css
9
9
  .layout {
10
- grid-template-areas:
11
- "header"
12
- "main";
13
- grid-template-rows: auto;
10
+ grid-template-areas:
11
+ "header"
12
+ "main";
13
+ grid-template-rows: auto;
14
14
  }
15
15
  ```
16
16
 
@@ -18,10 +18,10 @@ count when both declarations appear in the same block.
18
18
 
19
19
  ```css
20
20
  .layout {
21
- grid-template-areas:
22
- "header"
23
- "main";
24
- grid-template-rows: auto 1fr;
21
+ grid-template-areas:
22
+ "header"
23
+ "main";
24
+ grid-template-rows: auto 1fr;
25
25
  }
26
26
  ```
27
27
 
@@ -11,11 +11,11 @@ usually indicate layout collisions in your codebase.
11
11
 
12
12
  ```css
13
13
  .header {
14
- grid-area: header;
14
+ grid-area: header;
15
15
  }
16
16
 
17
17
  .mobileHeader {
18
- grid-area: header;
18
+ grid-area: header;
19
19
  }
20
20
  ```
21
21
 
@@ -23,11 +23,11 @@ usually indicate layout collisions in your codebase.
23
23
 
24
24
  ```css
25
25
  .header {
26
- grid-area: header;
26
+ grid-area: header;
27
27
  }
28
28
 
29
29
  .sidebar {
30
- grid-area: sidebar;
30
+ grid-area: sidebar;
31
31
  }
32
32
  ```
33
33
 
@@ -0,0 +1,56 @@
1
+ # no-reversed-placement-lines
2
+
3
+ Disallow reversed or zero-width numeric CSS Grid placement line ranges.
4
+
5
+ Numeric line ranges such as `grid-column: 4 / 2` and `grid-row: 3 / 3` do not
6
+ describe a forward span across tracks. This rule only compares plain numeric
7
+ line pairs in the same block and ignores named lines, spans, mixed signs, and
8
+ dynamic values.
9
+
10
+ ## Incorrect
11
+
12
+ ```css
13
+ .item {
14
+ grid-column: 4 / 2;
15
+ }
16
+ ```
17
+
18
+ ```css
19
+ .item {
20
+ grid-row-start: 7;
21
+ grid-row-end: 6;
22
+ }
23
+ ```
24
+
25
+ ## Correct
26
+
27
+ ```css
28
+ .item {
29
+ grid-column: 2 / 4;
30
+ }
31
+ ```
32
+
33
+ ```css
34
+ .item {
35
+ grid-row: span 2 / 5;
36
+ }
37
+ ```
38
+
39
+ ## Stylelint Config
40
+
41
+ ```js
42
+ export default {
43
+ plugins: ["stylelint-plugin-grid"],
44
+ rules: {
45
+ "grid/no-reversed-placement-lines": true,
46
+ },
47
+ };
48
+ ```
49
+
50
+ ## Related Rules
51
+
52
+ - [`no-invalid-span`](./no-invalid-span.md) rejects non-positive span counts.
53
+ - [`no-zero-grid-lines`](./no-zero-grid-lines.md) rejects line `0` in placement
54
+ values.
55
+ - [`grid-recommended`](./configs/grid-recommended.md) enables this rule by
56
+ default.
@@ -7,11 +7,11 @@ declared by `grid-template-areas` in the same stylesheet.
7
7
 
8
8
  ```css
9
9
  .layout {
10
- grid-template-areas: "header main";
10
+ grid-template-areas: "header main";
11
11
  }
12
12
 
13
13
  .sidebar {
14
- grid-area: sidebr;
14
+ grid-area: sidebr;
15
15
  }
16
16
  ```
17
17
 
@@ -19,11 +19,11 @@ declared by `grid-template-areas` in the same stylesheet.
19
19
 
20
20
  ```css
21
21
  .layout {
22
- grid-template-areas: "header main";
22
+ grid-template-areas: "header main";
23
23
  }
24
24
 
25
25
  .header {
26
- grid-area: header;
26
+ grid-area: header;
27
27
  }
28
28
  ```
29
29
 
@@ -11,11 +11,11 @@ templates and items live in separate files.
11
11
 
12
12
  ```css
13
13
  .layout {
14
- grid-template-areas: "header main";
14
+ grid-template-areas: "header main";
15
15
  }
16
16
 
17
17
  .main {
18
- grid-area: main;
18
+ grid-area: main;
19
19
  }
20
20
  ```
21
21
 
@@ -31,14 +31,14 @@ templates and items live in separate files.
31
31
 
32
32
  ```css
33
33
  .layout {
34
- grid-template-areas: "header main";
34
+ grid-template-areas: "header main";
35
35
  }
36
36
 
37
37
  .header {
38
- grid-area: header;
38
+ grid-area: header;
39
39
  }
40
40
 
41
41
  .main {
42
- grid-area: main;
42
+ grid-area: main;
43
43
  }
44
44
  ```
@@ -0,0 +1,53 @@
1
+ # no-zero-grid-lines
2
+
3
+ Disallow line `0` in CSS Grid placement declarations.
4
+
5
+ CSS Grid line numbering starts at `1` from the start edge and `-1` from the end
6
+ edge. Line `0` does not exist, so placement values using `0` are invalid.
7
+
8
+ ## Incorrect
9
+
10
+ ```css
11
+ .item {
12
+ grid-column: 0 / 2;
13
+ }
14
+ ```
15
+
16
+ ```css
17
+ .item {
18
+ grid-row-end: 0;
19
+ }
20
+ ```
21
+
22
+ ## Correct
23
+
24
+ ```css
25
+ .item {
26
+ grid-column: 1 / -1;
27
+ }
28
+ ```
29
+
30
+ ```css
31
+ .item {
32
+ grid-row: var(--row-start) / var(--row-end);
33
+ }
34
+ ```
35
+
36
+ ## Stylelint Config
37
+
38
+ ```js
39
+ export default {
40
+ plugins: ["stylelint-plugin-grid"],
41
+ rules: {
42
+ "grid/no-zero-grid-lines": true,
43
+ },
44
+ };
45
+ ```
46
+
47
+ ## Related Rules
48
+
49
+ - [`no-invalid-span`](./no-invalid-span.md) rejects non-positive span counts.
50
+ - [`no-reversed-placement-lines`](./no-reversed-placement-lines.md) checks
51
+ numeric placement ranges.
52
+ - [`grid-recommended`](./configs/grid-recommended.md) enables this rule by
53
+ default.
@@ -8,9 +8,9 @@ This rule is autofixable.
8
8
 
9
9
  ```css
10
10
  .layout {
11
- display: grid;
12
- grid-gap: 1rem;
13
- grid-column-gap: 2rem;
11
+ display: grid;
12
+ grid-gap: 1rem;
13
+ grid-column-gap: 2rem;
14
14
  }
15
15
  ```
16
16
 
@@ -18,9 +18,9 @@ This rule is autofixable.
18
18
 
19
19
  ```css
20
20
  .layout {
21
- display: grid;
22
- gap: 1rem;
23
- column-gap: 2rem;
21
+ display: grid;
22
+ gap: 1rem;
23
+ column-gap: 2rem;
24
24
  }
25
25
  ```
26
26
 
@@ -28,10 +28,10 @@ This rule is autofixable.
28
28
 
29
29
  ```js
30
30
  export default {
31
- plugins: ["stylelint-plugin-grid"],
32
- rules: {
33
- "grid/prefer-gap-properties": true
34
- }
31
+ plugins: ["stylelint-plugin-grid"],
32
+ rules: {
33
+ "grid/prefer-gap-properties": true,
34
+ },
35
35
  };
36
36
  ```
37
37
 
@@ -0,0 +1,49 @@
1
+ # prefer-minmax-zero-fr
2
+
3
+ Prefer `minmax(0, <flex>)` for bare flexible CSS Grid column tracks.
4
+
5
+ Bare `fr` column tracks use an automatic minimum size, so long content can
6
+ force columns wider than intended. Wrapping the flexible track in `minmax(0, …)`
7
+ keeps the column flexible while allowing content to shrink or overflow according
8
+ to the rest of the layout rules.
9
+
10
+ ## Incorrect
11
+
12
+ ```css
13
+ .layout {
14
+ grid-template-columns: 1fr 2fr;
15
+ }
16
+ ```
17
+
18
+ ## Correct
19
+
20
+ ```css
21
+ .layout {
22
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
23
+ }
24
+ ```
25
+
26
+ ```css
27
+ .layout {
28
+ grid-template-columns: repeat(2, 1fr);
29
+ }
30
+ ```
31
+
32
+ ## Stylelint Config
33
+
34
+ ```js
35
+ export default {
36
+ plugins: ["stylelint-plugin-grid"],
37
+ rules: {
38
+ "grid/prefer-minmax-zero-fr": true,
39
+ },
40
+ };
41
+ ```
42
+
43
+ ## Related Rules
44
+
45
+ - [`no-invalid-minmax`](./no-invalid-minmax.md) rejects flexible minimums inside
46
+ `minmax()`.
47
+ - [`no-invalid-auto-repeat`](./no-invalid-auto-repeat.md) checks auto-repeat
48
+ track sizes.
49
+ - [`grid-all`](./configs/grid-all.md) enables this optional rule.
@@ -15,8 +15,8 @@ cascade layers.
15
15
 
16
16
  ```css
17
17
  .cards {
18
- grid-auto-flow: column;
19
- grid-template-columns: repeat(3, 1fr);
18
+ grid-auto-flow: column;
19
+ grid-template-columns: repeat(3, 1fr);
20
20
  }
21
21
  ```
22
22
 
@@ -24,15 +24,15 @@ cascade layers.
24
24
 
25
25
  ```css
26
26
  .cards {
27
- grid-auto-flow: column;
28
- grid-auto-rows: minmax(10rem, auto);
27
+ grid-auto-flow: column;
28
+ grid-auto-rows: minmax(10rem, auto);
29
29
  }
30
30
  ```
31
31
 
32
32
  ```css
33
33
  .cards {
34
- grid-auto-flow: column;
35
- grid-template-rows: repeat(3, minmax(0, 1fr));
34
+ grid-auto-flow: column;
35
+ grid-template-rows: repeat(3, minmax(0, 1fr));
36
36
  }
37
37
  ```
38
38
 
@@ -40,10 +40,10 @@ cascade layers.
40
40
 
41
41
  ```js
42
42
  export default {
43
- plugins: ["stylelint-plugin-grid"],
44
- rules: {
45
- "grid/require-explicit-rows-with-column-flow": true
46
- }
43
+ plugins: ["stylelint-plugin-grid"],
44
+ rules: {
45
+ "grid/require-explicit-rows-with-column-flow": true,
46
+ },
47
47
  };
48
48
  ```
49
49
 
@@ -0,0 +1,80 @@
1
+ # require-explicit-tracks-with-areas
2
+
3
+ Require explicit track sizing alongside CSS Grid named area templates.
4
+
5
+ Named area templates are easiest to maintain when their columns, and optionally
6
+ their rows, are sized in the same block. By default this rule requires
7
+ `grid-template-columns` and leaves rows optional because auto-sized rows are
8
+ common.
9
+
10
+ ## Incorrect
11
+
12
+ ```css
13
+ .layout {
14
+ grid-template-areas: "nav main";
15
+ }
16
+ ```
17
+
18
+ With `{ rows: true }`:
19
+
20
+ ```css
21
+ .layout {
22
+ grid-template-areas: "main";
23
+ grid-template-columns: minmax(0, 1fr);
24
+ }
25
+ ```
26
+
27
+ ## Correct
28
+
29
+ ```css
30
+ .layout {
31
+ grid-template-areas: "nav main";
32
+ grid-template-columns: auto minmax(0, 1fr);
33
+ }
34
+ ```
35
+
36
+ With `{ rows: true }`:
37
+
38
+ ```css
39
+ .layout {
40
+ grid-template-areas: "main";
41
+ grid-template-columns: minmax(0, 1fr);
42
+ grid-template-rows: auto;
43
+ }
44
+ ```
45
+
46
+ ## Options
47
+
48
+ ```js
49
+ export default {
50
+ plugins: ["stylelint-plugin-grid"],
51
+ rules: {
52
+ "grid/require-explicit-tracks-with-areas": [
53
+ true,
54
+ {
55
+ columns: true,
56
+ rows: false,
57
+ },
58
+ ],
59
+ },
60
+ };
61
+ ```
62
+
63
+ ## Stylelint Config
64
+
65
+ ```js
66
+ export default {
67
+ plugins: ["stylelint-plugin-grid"],
68
+ rules: {
69
+ "grid/require-explicit-tracks-with-areas": true,
70
+ },
71
+ };
72
+ ```
73
+
74
+ ## Related Rules
75
+
76
+ - [`no-mismatched-template-rows`](./no-mismatched-template-rows.md) compares
77
+ named area rows with `grid-template-rows`.
78
+ - [`validate-track-counts`](./validate-track-counts.md) compares named area
79
+ columns and rows with explicit track counts.
80
+ - [`grid-all`](./configs/grid-all.md) enables this optional rule.
@@ -9,9 +9,9 @@ authored template declaration instead of leaving it to browser behavior.
9
9
 
10
10
  ```css
11
11
  .layout {
12
- grid-template-areas:
13
- "main side"
14
- "main main";
12
+ grid-template-areas:
13
+ "main side"
14
+ "main main";
15
15
  }
16
16
  ```
17
17
 
@@ -19,9 +19,9 @@ authored template declaration instead of leaving it to browser behavior.
19
19
 
20
20
  ```css
21
21
  .layout {
22
- grid-template-areas:
23
- "main side"
24
- "main side";
22
+ grid-template-areas:
23
+ "main side"
24
+ "main side";
25
25
  }
26
26
  ```
27
27
 
@@ -29,10 +29,10 @@ authored template declaration instead of leaving it to browser behavior.
29
29
 
30
30
  ```js
31
31
  export default {
32
- plugins: ["stylelint-plugin-grid"],
33
- rules: {
34
- "grid/validate-area-shapes": true
35
- }
32
+ plugins: ["stylelint-plugin-grid"],
33
+ rules: {
34
+ "grid/validate-area-shapes": true,
35
+ },
36
36
  };
37
37
  ```
38
38
 
@@ -7,11 +7,11 @@ match the dimensions of `grid-template-areas`.
7
7
 
8
8
  ```css
9
9
  .layout {
10
- grid-template-areas:
11
- "nav main"
12
- "nav footer";
13
- grid-template-columns: 12rem;
14
- grid-template-rows: auto auto auto;
10
+ grid-template-areas:
11
+ "nav main"
12
+ "nav footer";
13
+ grid-template-columns: 12rem;
14
+ grid-template-rows: auto auto auto;
15
15
  }
16
16
  ```
17
17
 
@@ -19,11 +19,11 @@ match the dimensions of `grid-template-areas`.
19
19
 
20
20
  ```css
21
21
  .layout {
22
- grid-template-areas:
23
- "nav main"
24
- "nav footer";
25
- grid-template-columns: 12rem 1fr;
26
- grid-template-rows: auto auto;
22
+ grid-template-areas:
23
+ "nav main"
24
+ "nav footer";
25
+ grid-template-columns: 12rem 1fr;
26
+ grid-template-rows: auto auto;
27
27
  }
28
28
  ```
29
29