@yield('body')
diff --git a/docs/source/grid.md b/docs/source/grid.md
index aa72b57f6..8852fbd5f 100644
--- a/docs/source/grid.md
+++ b/docs/source/grid.md
@@ -4,3 +4,234 @@ title: "Grid"
---
# Grid
+
+Basic grid example:
+
+
+
+Columns don't need to fill a row:
+
+
+
+
+Columns can be different widths:
+
+
+
+
+Rows can overflow and wrap:
+
+
+
+Columns can have gutters:
+
+
+
.flex.flex-wrap.pull-x-4
+
+
+
+
.w-full
+
.md:w-1/3
+
.px-4
+
+
+
+
+
.w-full
+
.md:w-1/3
+
.px-4
+
+
+
+
+
.w-full
+
.md:w-1/3
+
.px-4
+
+
+
+
+
+
+Column widths can be automatic:
+
+
+
.flex.flex-wrap
+
+
+
+ .w-1/4.md:flex-fill
+
+
+
+
+ .w-1/4.md:flex-fill
+
+
+
+
+ .w-1/4.md:flex-fill
+
+
+
+
+ .w-1/4.md:flex-fill
+
+
+
+
+ .w-1/4.md:flex-fill
+
+
+
+
+
+Fixed width columns are still respected even if a smaller screen has auto column widths:
+
+
+
.flex.flex-wrap
+
+
+
+
.flex-fill
+
.md:w-1/6
+
.md:flex-none
+
+
+
+
+
.flex-fill
+
.md:w-1/6
+
.md:flex-none
+
+
+
+
+
.flex-fill
+
.md:w-1/6
+
.md:flex-none
+
+
+
+
+
.flex-fill
+
.md:w-1/6
+
.md:flex-none
+
+
+
+
+
.flex-fill
+
.md:w-1/6
+
.md:flex-none
+
+
+
+
+
+
+Use margin auto utilities to accomplish offsets:
+
+
+
.flex.flex-wrap
+
+
+
+
.md:w-1/3
+
.md:ml-auto
+
+
+
+
+
.md:w-1/6
+
.md:mr-auto
+
+
+
+
diff --git a/src/generators.less b/src/generators.less
index ea5723d77..b57d9be97 100644
--- a/src/generators.less
+++ b/src/generators.less
@@ -10,7 +10,6 @@
@import "generators/border-radius";
@import "generators/border-widths";
@import "generators/constrain";
-@import "generators/grid";
@import "generators/shadows";
@import "generators/sizing";
@import "generators/spacing-padding";
diff --git a/src/generators/grid.less b/src/generators/grid.less
deleted file mode 100644
index 0c55c0e3e..000000000
--- a/src/generators/grid.less
+++ /dev/null
@@ -1,70 +0,0 @@
-.generate-grid-columns(@grid-column-count; @prefix; @i: 1) when (@i <= @grid-column-count) {
- .@{prefix}col-@{i} {
- flex-basis: 100% * (@i / @grid-column-count);
- max-width: 100% * (@i / @grid-column-count);
- }
-
- @offset-i: @i - 1;
- .@{prefix}offset-@{offset-i} {
- margin-left: 100% * (@offset-i / @grid-column-count);
- }
-
- .generate-grid-columns(@grid-column-count; @prefix; @i + 1);
-}
-
-.generate-responsive-grid(@grid-column-count; @screen; @min-width) {
- @prefix: ~"@{screen}\:";
-
- @media (min-width: @min-width) {
- .@{prefix}col {
- flex-grow: 1;
- flex-basis: 0;
- max-width: 100%;
- min-width: 0;
- }
-
- .@{prefix}col-first {
- order: -1;
- }
-
- .@{prefix}col-last {
- order: 1;
- }
-
- .generate-grid-columns(@grid-column-count; @prefix);
- }
-}
-
-.generate-responsive-grids(@grid-column-count; @screens; @i: 1) when (@i <= length(@screens)) {
- @screen: extract(@screens, @i);
- @name: extract(@screen, 1);
- @screen-width: extract(@screen, 2);
-
- .generate-responsive-grid(@grid-column-count; @name; @screen-width);
- .generate-responsive-grids(@grid-column-count; @screens; @i + 1);
-}
-
-.generate-all-grids(@grid-column-count) {
- .col {
- flex-grow: 1;
- flex-basis: 0;
- max-width: 100%;
- min-width: 0;
- }
- .col-first {
- order: -1;
- }
- .col-last {
- order: 1;
- }
- .generate-grid-columns(@grid-column-count; ~"");
-}
-
-.generate-all-grids(@grid-column-count; none) {
- .generate-all-grids(@grid-column-count);
-}
-
-.generate-all-grids(@grid-column-count; @screens) when not (@screens = none) {
- .generate-all-grids(@grid-column-count);
- .generate-responsive-grids(@grid-column-count; @screens);
-}
diff --git a/src/generators/spacing-margin.less b/src/generators/spacing-margin.less
index b6483a6da..fc9e03048 100644
--- a/src/generators/spacing-margin.less
+++ b/src/generators/spacing-margin.less
@@ -61,6 +61,8 @@
@media (min-width: @screen-width) {
@prefix: ~"@{name}\:";
+ .@{prefix}ml-auto { margin-left: auto; }
+ .@{prefix}mr-auto { margin-right: auto; }
.@{prefix}mx-auto { margin-left: auto; margin-right: auto; }
.generate-screen-margin-utilities(@margin-scale; @name);
}
@@ -69,6 +71,8 @@
}
.define-margin-utilities(@margin-scale) {
+ .ml-auto { margin-left: auto; }
+ .mr-auto { margin-right: auto; }
.mx-auto { margin-left: auto; margin-right: auto; }
.generate-margin-utilities(@margin-scale);
}
diff --git a/src/utilities.less b/src/utilities.less
index 728d608e4..8b9c82fe1 100644
--- a/src/utilities.less
+++ b/src/utilities.less
@@ -7,7 +7,6 @@
@import "utilities/constrain";
@import "utilities/display";
@import "utilities/flex";
-@import "utilities/grid";
@import "utilities/images";
@import "utilities/misc";
@import "utilities/overflow";
@@ -18,3 +17,10 @@
@import "utilities/text";
@import "utilities/vue";
@import "utilities/z-index";
+
+@screens:
+ sm 576px,
+ md 768px,
+ lg 992px,
+ xl 1200px,
+;
diff --git a/src/utilities/grid.less b/src/utilities/grid.less
deleted file mode 100644
index 723bea4a1..000000000
--- a/src/utilities/grid.less
+++ /dev/null
@@ -1,16 +0,0 @@
-@screens:
- sm 576px,
- md 768px,
- lg 992px,
- xl 1200px;
-
-@grid-column-count: 12;
-
-.row {
- box-sizing: border-box;
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
-}
-
-.generate-all-grids(@grid-column-count; @screens);
diff --git a/src/utilities/sizing.less b/src/utilities/sizing.less
index 76634badd..7d242759a 100644
--- a/src/utilities/sizing.less
+++ b/src/utilities/sizing.less
@@ -16,6 +16,17 @@
'96' 24rem,
'128' 32rem,
'full' 100%,
+ '1\/2' 50%,
+ '1\/3' (100% / 3),
+ '2\/3' (100% / 3 * 2),
+ '1\/4' 25%,
+ '3\/4' 75%,
+ '1\/5' 20%,
+ '2\/5' 40%,
+ '3\/5' 60%,
+ '4\/5' 80%,
+ '1\/6' (100% / 6),
+ '5\/6' (100% / 6 * 5),
;
@width-scale: @sizing-scale;