Layout Grid
Installation
yarn add @chewy/kib-layout-styles
Import
@use '~@chewy/kib-layout-styles/src/kib-grid/styles' as kib-grid;
Functions
get-columns
@function get-columns($size) { ... }
@function get-columns($size) { $columns: common.get-map-by-key-safe(settings.$columns, $size, 'column'); @return $columns; }
Description
Gets a breakpoint-specific number of columns.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
Returns
Number
—Unitless number
Requires
- [function]
get-map-by-key-safe
- [variable]
columns
- [variable]
size
Used by
- [function]
get-column-width
- [mixin]
generate-item-span-width
- [mixin]
generate-item-spans
- [mixin]
generate-item-offset-margin
- [mixin]
generate-item-offsets
- [mixin]
generate-item-ordering
- [mixin]
item-span
- [mixin]
item-offset
get-gutters
@function get-gutters($size) { ... }
@function get-gutters($size) { $gutter: common.get-map-by-key-safe(settings.$gutters, $size, 'gutter'); @return $gutter; }
Description
Gets a breakpoint-specific gutter spacing properties.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
Returns
String
—String with CSS var() function with fallback values
Requires
- [function]
get-map-by-key-safe
- [variable]
gutters
- [variable]
size
Used by
- [mixin]
generate-item-span-width
- [mixin]
generate-item-offset-margin
- [mixin]
item-span
- [mixin]
item-offset
get-column-width
@function get-column-width($span, $size) { ... }
@function get-column-width($span, $size) { $columns: if(meta.type-of($size) == string, get-columns($size), $size); @return if($span < $columns, math.percentage(math.div($span, $columns)), 100%); }
Description
Gets a breakpoint-specific column size.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | The number of columns to span. | Number | — none |
$size | A named breakpoint size or number of total columns. | String or Number | — none |
Returns
Number
—The column span amount as a percentage.
Requires
- [function]
get-columns
- [variable]
columns
- [variable]
size
Used by
- [mixin]
item-span-width
- [mixin]
item-offset-margin
has-min-breakpoint
@function has-min-breakpoint($size) { ... }
@function has-min-breakpoint($size) { @return if(common.get-breakpoint-min($size) != 0, true, false); }
Description
Returns if a minimum size query is needed.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
Returns
Boolean
Requires
- [function]
get-breakpoint-min
- [variable]
size
Used by
- [mixin]
generate-breakpoint-item-spans
- [mixin]
generate-breakpoint-item-offsets
- [mixin]
generate-breakpoint-item-ordering
has-max-breakpoint
@function has-max-breakpoint($size) { ... }
@function has-max-breakpoint($size) { @return if(common.get-breakpoint-max($size) != null, true, false); }
Description
Returns if a maximum size query is needed.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
Returns
Boolean
Requires
- [function]
get-breakpoint-max
- [variable]
size
Used by
- [mixin]
generate-breakpoint-item-spans
- [mixin]
generate-breakpoint-item-offsets
- [mixin]
generate-breakpoint-item-ordering
Mixins
container-base
@mixin container-base() { ... }
@mixin container-base() { box-sizing: border-box; display: flex; flex: { direction: row; wrap: wrap; } }
Description
Base styles for the grid container.
Parameters
None.
container-aligned-left
@mixin container-aligned-left() { ... }
@mixin container-aligned-left() { justify-content: flex-start; }
Description
Variant styles for the grid container to horizontally align to the left.
Parameters
None.
container-aligned-right
@mixin container-aligned-right() { ... }
@mixin container-aligned-right() { justify-content: flex-end; }
Description
Variant styles for the grid container to horizontally align to the right.
Parameters
None.
container-aligned-center
@mixin container-aligned-center() { ... }
@mixin container-aligned-center() { justify-content: center; }
Description
Variant styles for the grid container to horizontally align to the center.
Parameters
None.
container-vertical-aligned-top
@mixin container-vertical-aligned-top() { ... }
@mixin container-vertical-aligned-top() { align-items: flex-start; }
Description
Variant styles for the grid container to vertically align to the top.
Parameters
None.
container-vertical-aligned-bottom
@mixin container-vertical-aligned-bottom() { ... }
@mixin container-vertical-aligned-bottom() { align-items: flex-end; }
Description
Variant styles for the grid container to vertically align to the bottom.
Parameters
None.
container-vertical-aligned-center
@mixin container-vertical-aligned-center() { ... }
@mixin container-vertical-aligned-center() { align-items: center; }
Description
Variant styles for the grid container to vertically align to the center.
Parameters
None.
container-spacing
@mixin container-spacing($gutter, $query) { ... }
@mixin container-spacing($gutter, $query) { $formatted-gutter: calc((#{$gutter} * 0.5) * -1); @if meta.type-of($gutter) == 'number' { // check to avoid breaking change $formatted-gutter: unit.rem(($gutter * 0.5)) * -1; } @if $query { @include common.media-query($query) { margin: { left: $formatted-gutter; right: $formatted-gutter; } } } @else { margin: { left: $formatted-gutter; right: $formatted-gutter; } } }
Description
Breakpoint-specific spacing styles for the grid container.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$gutter | Spacing between items as Number or String with CSS var() function with fallback values | Number or String | — none |
$query | (optional) A named breakpoint size. | String | — none |
Requires
- [function]
rem
Used by
- [mixin]
generate-container-spacing
generate-container-spacing
@mixin generate-container-spacing() { ... }
@mixin generate-container-spacing() { @each $size, $gutter in settings.$gutters { @include container-spacing($gutter, min-#{$size}); } }
Description
Generates each breakpoint spacing style for the grid container.
Parameters
None.
Requires
- [mixin]
container-spacing
- [variable]
size
- [variable]
gutters
item-base
@mixin item-base() { ... }
@mixin item-base() { box-sizing: border-box; }
Description
The base styles for a grid item.
Parameters
None.
item-spacing
@mixin item-spacing($gutter, $query) { ... }
@mixin item-spacing($gutter, $query) { $horizontal-gutter: calc(#{$gutter} * 0.5); $vertical-gutter: $gutter; @if meta.type-of($gutter) == 'number' { // check to avoid breaking change $horizontal-gutter: unit.rem(($gutter * 0.5)); $vertical-gutter: unit.rem($gutter); } @if $query { @include common.media-query($query) { margin: { left: $horizontal-gutter; right: $horizontal-gutter; bottom: $vertical-gutter; } } } @else { margin: { left: $horizontal-gutter; right: $horizontal-gutter; bottom: $vertical-gutter; } } }
Description
Breakpoint-specific spacing styles for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$gutter | Spacing between items as Number or String with CSS var() function with fallback values | Number or String | — none |
$query | (optional) A named breakpoint size. | String | — none |
Requires
- [function]
rem
Used by
- [mixin]
generate-item-spacing
generate-item-spacing
@mixin generate-item-spacing() { ... }
@mixin generate-item-spacing() { @each $size, $gutter in settings.$gutters { @include item-spacing($gutter, min-#{$size}); } }
Description
Generates each breakpoint spacing style for a grid item.
Parameters
None.
Requires
- [mixin]
item-spacing
- [variable]
size
- [variable]
gutters
item-span-modifier
@mixin item-span-modifier($prefix, $span, $suffix: '', $at) { ... }
@mixin item-span-modifier($prefix, $span, $suffix: '', $at) { $selector: '' + $prefix + '-' + $span + $suffix; @if $at { #{$selector}\@#{$at} { @content; } } @else { #{$selector} { @content; } } }
Description
Contructs a modifier selector for grid items.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$prefix | Selector prefix. | String | — none |
$span | Number of columns to span. | Number | — none |
$suffix | (Optional) Selector suffix. | String | '' |
$at | (Optional) Media query suffix. | String | — none |
Used by
- [mixin]
generate-item-spans
- [mixin]
generate-item-offsets
- [mixin]
generate-item-ordering
item-span-width
@mixin item-span-width($span, $columns, $gutter) { ... }
@mixin item-span-width($span, $columns, $gutter) { $width: functions.get-column-width($span, $columns); $formatted-gutter: $gutter; @if meta.type-of($gutter) == 'number' { // check to avoid breaking change $formatted-gutter: unit.rem($gutter); } width: calc(#{$width} - #{$formatted-gutter}); }
Description
Column-specific width for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to span. | Number | — none |
$columns | The total number of columns in the grid. | Number | — none |
$gutter | The gutter amount between columns as Number or String with CSS var() function with fallback values. | Number or String | — none |
Requires
- [function]
get-column-width
- [function]
rem
- [variable]
width
- [variable]
columns
Used by
- [mixin]
generate-item-span-width
- [mixin]
item-span
generate-item-span-width
@mixin generate-item-span-width($span, $size) { ... }
@mixin generate-item-span-width($span, $size) { $columns: functions.get-columns($size); $gutter: functions.get-gutters($size); @include item-span-width($span, $columns, $gutter); }
Description
Grid-specific width for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to span. | Number | — none |
$size | A named breakpoint size. | String | — none |
Requires
- [mixin]
item-span-width
- [function]
get-columns
- [function]
get-gutters
- [variable]
columns
- [variable]
size
Used by
- [mixin]
generate-item-spans
generate-item-spans
@mixin generate-item-spans($size, $prefix, $suffix: '', $at) { ... }
@mixin generate-item-spans($size, $prefix, $suffix: '', $at) { @for $i from 1 through functions.get-columns($size) { @include item-span-modifier($prefix, $i, $suffix, $at) { @include generate-item-span-width($i, $size); } } }
Description
Grid-specific grid item styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$prefix | Selector prefix. | String | — none |
$suffix | (Optional) Selector suffix. | String | '' |
$at | (Optional) Media query suffix. | String | — none |
Requires
- [mixin]
item-span-modifier
- [mixin]
generate-item-span-width
- [function]
get-columns
- [variable]
size
Used by
- [mixin]
generate-breakpoint-item-spans
generate-breakpoint-item-spans
@mixin generate-breakpoint-item-spans($size, $selector) { ... }
@mixin generate-breakpoint-item-spans($size, $selector) { $has-min: functions.has-min-breakpoint($size); $has-max: functions.has-max-breakpoint($size); $min-size: min-#{$size}; @if $has-min { // Min @include common.media-query($min-size) { @include generate-item-spans($size, $selector, $at: $min-size); } // Only @include common.media-query($size) { @include generate-item-spans($size, $selector, $at: $size); } } @else { // Min @include generate-item-spans($size, $selector, $at: $min-size); } @if $has-max { $max-size: max-#{$size}; @include common.media-query($max-size) { @if not $has-min { // Only @include generate-item-spans($size, $selector, $at: $size); } // Max @include generate-item-spans($size, $selector, $at: $max-size); } } }
Description
Breakpoint-specific grid item styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$selector | Selector to generate classnames from. | String | — none |
Requires
- [mixin]
generate-item-spans
- [function]
has-min-breakpoint
- [function]
has-max-breakpoint
- [variable]
size
Used by
- [mixin]
generate-all-item-spans
generate-all-item-spans
@mixin generate-all-item-spans($selector) { ... }
@mixin generate-all-item-spans($selector) { @each $size in common.get-breakpoint-sizes() { @include generate-breakpoint-item-spans($size, $selector); } }
Description
Generates grid item styles for all breakpoints.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$selector | Selector to generate classnames from. | String | — none |
Requires
- [mixin]
generate-breakpoint-item-spans
- [function]
get-breakpoint-sizes
- [variable]
size
item-offset-margin
@mixin item-offset-margin($span, $columns, $gutter, $direction: 'left') { ... }
@mixin item-offset-margin($span, $columns, $gutter, $direction: 'left') { $width: functions.get-column-width($span, $columns); $formatted-gutter: calc(#{$gutter} * 0.5); @if meta.type-of($gutter) == 'number' { // check to avoid breaking change $formatted-gutter: unit.rem($gutter * 0.5); } margin-#{$direction}: calc(#{$width} + #{$formatted-gutter}); }
Description
Column-specific offset margin for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to offset. | Number | — none |
$columns | The total number of columns in the grid. | Number | — none |
$gutter | The gutter amount between columns as Number or String with CSS var() function with fallback values. | Number or String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | 'left' |
Requires
- [function]
get-column-width
- [function]
rem
- [variable]
width
- [variable]
columns
Used by
- [mixin]
generate-item-offset-margin
- [mixin]
item-offset
generate-item-offset-margin
@mixin generate-item-offset-margin($span, $size, $direction: 'left') { ... }
@mixin generate-item-offset-margin($span, $size, $direction: 'left') { $columns: functions.get-columns($size); $gutter: functions.get-gutters($size); @include item-offset-margin($span, $columns, $gutter, $direction); }
Description
Grid-specific offset margin for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to offset. | Number | — none |
$size | A named breakpoint size. | String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | 'left' |
Requires
- [mixin]
item-offset-margin
- [function]
get-columns
- [function]
get-gutters
- [variable]
columns
- [variable]
size
Used by
- [mixin]
generate-item-offsets
generate-item-offsets
@mixin generate-item-offsets($size, $prefix, $direction: 'left', $suffix: '', $at) { ... }
@mixin generate-item-offsets($size, $prefix, $direction: 'left', $suffix: '', $at) { @for $i from 1 through functions.get-columns($size) { @include item-span-modifier($prefix, $i, $suffix, $at) { @include generate-item-offset-margin($i, $size, $direction); } } }
Description
Grid-specific grid item offset styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$prefix | Selector prefix. | String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | 'left' |
$suffix | (optional) Selector suffix. | String | '' |
$at | (optional) Media query suffix. | String | — none |
Requires
- [mixin]
item-span-modifier
- [mixin]
generate-item-offset-margin
- [function]
get-columns
- [variable]
size
Used by
- [mixin]
generate-breakpoint-item-offsets
generate-breakpoint-item-offsets
@mixin generate-breakpoint-item-offsets($size, $selector, $direction: 'left') { ... }
@mixin generate-breakpoint-item-offsets($size, $selector, $direction: 'left') { $has-min: functions.has-min-breakpoint($size); $has-max: functions.has-max-breakpoint($size); $min-size: min-#{$size}; @if $has-min { // Min @include common.media-query($min-size) { @include generate-item-offsets($size, $selector, $direction, $at: $min-size); } // Only @include common.media-query($size) { @include generate-item-offsets($size, $selector, $direction, $at: $size); } } @else { // Min @include generate-item-offsets($size, $selector, $direction, $at: $min-size); } @if $has-max { $max-size: max-#{$size}; @include common.media-query($max-size) { @if not $has-min { // Only @include generate-item-offsets($size, $selector, $direction, $at: $size); } // Max @include generate-item-offsets($size, $selector, $direction, $at: $max-size); } } }
Description
Breakpoint-specific grid item styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$selector | Selector to generate classnames from. | String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | 'left' |
Requires
- [mixin]
generate-item-offsets
- [function]
has-min-breakpoint
- [function]
has-max-breakpoint
- [variable]
size
Used by
- [mixin]
generate-all-item-offsets
generate-all-item-offsets
@mixin generate-all-item-offsets($selector, $direction) { ... }
@mixin generate-all-item-offsets($selector, $direction) { @each $size in common.get-breakpoint-sizes() { @include generate-breakpoint-item-offsets($size, $selector, $direction); } }
Description
Generates grid item styles for all breakpoints.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$selector | Selector to generate classnames from. | String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | — none |
Requires
- [mixin]
generate-breakpoint-item-offsets
- [function]
get-breakpoint-sizes
- [variable]
size
generate-item-ordering
@mixin generate-item-ordering($size, $prefix, $suffix: '', $at) { ... }
@mixin generate-item-ordering($size, $prefix, $suffix: '', $at) { $columns: functions.get-columns($size); @include item-span-modifier($prefix, 'first', $suffix, $at) { order: -1; } @for $i from 0 through $columns { @include item-span-modifier($prefix, $i, $suffix, $at) { order: $i; } } @include item-span-modifier($prefix, 'last', $suffix, $at) { order: $columns + 1; } }
Description
Grid-specific grid item ordering styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$prefix | Selector prefix. | String | — none |
$suffix | (Optional) Selector suffix. | String | '' |
$at | (Optional) Media query suffix. | String | — none |
Requires
- [mixin]
item-span-modifier
- [function]
get-columns
- [variable]
columns
- [variable]
size
Used by
generate-breakpoint-item-ordering
@mixin generate-breakpoint-item-ordering($size, $selector) { ... }
@mixin generate-breakpoint-item-ordering($size, $selector) { $has-min: functions.has-min-breakpoint($size); $has-max: functions.has-max-breakpoint($size); $min-size: min-#{$size}; @if $has-min { // Min @include common.media-query($min-size) { @include generate-item-ordering($size, $selector, $at: $min-size); } // Only @include common.media-query($size) { @include generate-item-ordering($size, $selector, $at: $size); } } @else { // Min @include generate-item-ordering($size, $selector, $at: $min-size); } @if $has-max { $max-size: max-#{$size}; @include common.media-query($max-size) { @if not $has-min { // Only @include generate-item-ordering($size, $selector, $at: $size); } // Max @include generate-item-ordering($size, $selector, $at: $max-size); } } }
Description
Breakpoint-specific grid item order styles.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$size | A named breakpoint size. | String | — none |
$selector | Selector to generate classnames from. | String | — none |
Requires
- [mixin]
generate-item-ordering
- [function]
has-min-breakpoint
- [function]
has-max-breakpoint
- [variable]
size
Used by
- [mixin]
generate-all-item-ordering
generate-all-item-ordering
@mixin generate-all-item-ordering($selector) { ... }
@mixin generate-all-item-ordering($selector) { @each $size in common.get-breakpoint-sizes() { @include generate-breakpoint-item-ordering($size, $selector); } }
Description
Generated grid item order styles for all breakpoints.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$selector | Selector to generate classnames from. | String | — none |
Requires
- [mixin]
generate-breakpoint-item-ordering
- [function]
get-breakpoint-sizes
- [variable]
size
item-span
@mixin item-span($span, $query, $columns) { ... }
@mixin item-span($span, $query, $columns) { $size: common.get-root-size($query); $total-columns: if($columns != null, $columns, functions.get-columns($size)); $gutter: functions.get-gutters($size); @include common.media-query($query) { @include item-span-width($span, $total-columns, $gutter); } }
Description
Column-specific width styles for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to span. | Number | — none |
$query | A named breakpoint size. This may include a | String | — none |
$columns | (optional) Override total number of columns in the grid. | Number | — none |
Requires
- [mixin]
item-span-width
- [function]
get-root-size
- [function]
get-columns
- [function]
get-gutters
- [variable]
size
- [variable]
columns
item-offset
@mixin item-offset($span, $query, $direction: 'left', $columns) { ... }
@mixin item-offset($span, $query, $direction: 'left', $columns) { $size: common.get-root-size($query); $total-columns: if($columns != null, $columns, functions.get-columns($size)); $gutter: functions.get-gutters($size); @include common.media-query($query) { @include item-offset-margin($span, $total-columns, $gutter, $direction); } }
Description
Column-specific offset styles for a grid item.
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$span | Number of columns to offset. | Number | — none |
$query | A named breakpoint size. This may include a | String | — none |
$direction | (optional) Direction to offset, left or right. Default is left. | String | 'left' |
$columns | (optional) Override total number of columns in the grid. | Number | — none |
Requires
- [mixin]
item-offset-margin
- [function]
get-root-size
- [function]
get-columns
- [function]
get-gutters
- [variable]
size
- [variable]
columns
Variables
columns
$columns: (...) !default;
$columns: ( xs: 4, sm: 4, md: 8, lg: 12, xl: 12 ) !default;
Description
Defines the number of columns for each breakpoint
Type
Map
Used by
- [function]
get-columns
- [function]
get-column-width
- [mixin]
item-span-width
- [mixin]
generate-item-span-width
- [mixin]
item-offset-margin
- [mixin]
generate-item-offset-margin
- [mixin]
generate-item-ordering
- [mixin]
item-span
- [mixin]
item-offset
gutters
$gutters: (...) !default;
$gutters: ( xs: spacing.get('s4'), sm: spacing.get('s4'), md: spacing.get('s4'), lg: spacing.get('s4'), xl: spacing.get('s4') ) !default;
Description
Defines the spacing properties, between columns, for each breakpoint
Type
Map
Used by
- [function]
get-gutters
- [mixin]
generate-container-spacing
- [mixin]
generate-item-spacing