| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| @mixin Cell ($size) { |
| // Specific sizing for cells in 5% increments. |
| .Cell { |
| @for $i from 1 through 20 { |
| &.#{$size}-#{$i*5} { |
| flex: 0 0 #{$i*5}#{'%'}; |
| } |
| } |
| } |
| } |
| |
| @mixin Fit ($size) { |
| // Proportionally space cells rather than wrapping |
| &.Fit-#{$size} { |
| >.Cell { |
| -webkit-box-flex: 1; |
| -webkit-flex: 1; |
| -ms-flex: 1; |
| flex: 1; |
| } |
| } |
| } |
| |
| // Default grid behavior |
| .Grid { |
| display: flex; |
| flex-wrap: wrap; |
| justify-content: center; |
| |
| // Add gutters to a grid |
| &.Gutter { |
| margin: 0 -1rem 0 -1rem; |
| |
| >.Cell { |
| padding: 0 1rem 0 1rem; |
| } |
| } |
| |
| // Grid Vertical Alignment |
| &.Align-Top { |
| align-items: flex-start; |
| } |
| &.Align-Bottom { |
| align-items: flex-end; |
| } |
| &.Align-Center { |
| align-items: center; |
| } |
| |
| // Default cell behavior |
| .Cell { |
| // Cell sizing, full-width by default for responsive |
| -webkit-box-flex: 0; |
| -webkit-flex: 0 0 100%; |
| -ms-flex: 0 0 100%; |
| flex: 0 0 100%; |
| |
| // Per Cell Alignment |
| &.Align-Top { |
| align-self: flex-start; |
| } |
| &.Align-Bottom { |
| align-self: flex-end; |
| } |
| &.Align-Center { |
| align-self: center; |
| } |
| } |
| |
| $display-size: "Mobile"; |
| @include Fit($display-size); |
| @include Cell($display-size); |
| } |
| |
| // Small devices (Landscape phones, 544px) |
| @media (min-width: 34em) { |
| .Grid { |
| $display-size: "Small"; |
| @include Fit($display-size); |
| @include Cell($display-size); |
| } |
| } |
| |
| // Medium devices (Tablets, 768px) |
| @media (min-width: 48em) { |
| .Grid { |
| $display-size: "Medium"; |
| @include Fit($display-size); |
| @include Cell($display-size); |
| } |
| } |
| |
| // Large devices (Desktops, 992px) |
| @media (min-width: 62em) { |
| .Grid { |
| $display-size: "Large"; |
| @include Cell($display-size); |
| @include Fit($display-size); |
| } |
| } |
| |
| // Extra large devices (Large desktops, 1200px) |
| @media (min-width: 75em) { |
| .Grid { |
| $display-size: "Extra"; |
| @include Cell($display-size); |
| @include Fit($display-size); |
| } |
| } |