Carousel
Installation
yarn add @chewy/kib-carousels-styles
Import
@use '~@chewy/kib-carousels-styles/src/kib-carousel/styles' as kib-carousel;
Mixins
root-container
@mixin root-container() { ... }
@mixin root-container() { @include kib-button-new.root; @include media.query('max-sm') { margin-left: unit.negative(settings.$max-small); margin-right: unit.negative(settings.$max-small); } }
wrapper
@mixin wrapper() { ... }
@mixin wrapper() { position: relative; }
Description
Carousel content wrapper
Parameters
None.
content
@mixin content() { ... }
@mixin content() { @include kib-scroller.container; @include kib-scroller.hide-scrollbar; margin-top: 0; margin-bottom: 0; padding-left: 0; padding-right: 0; display: flex; display: grid; gap: settings.$gap; grid-auto-flow: column; scroll-snap-type: none; justify-content: flex-start; &:focus { outline: 0; } @include media.query('max-sm') { gap: settings.$gap-small; padding-left: settings.$max-small; padding-right: settings.$max-small; scroll-padding: settings.$max-small; // This is a spacer to have a gap applied at the end of the carousel. &::after { content: ''; width: unit.rem(1px); } } }
scroll-snap
@mixin scroll-snap() { ... }
@mixin scroll-snap() { scroll-snap-type: x proximity; }
Description
Carousel scroll snapping when overflow is detected
Parameters
None.
control
@mixin control() { ... }
@mixin control() { @include kib-button-new.generate-styles; & + & { margin-left: 0; } padding: 0; position: absolute; top: 50%; margin-top: math.div(settings.$control-size, -2); width: settings.$control-size; height: settings.$control-size; @include media.query('max-sm') { &:not(:focus-within) { @include kib-core.visually-hidden; } } }
control-next
@mixin control-next() { ... }
@mixin control-next() { right: settings.$control-offset; @include media.query('min-md') { right: settings.$control-offset-large; } }
Description
"Next" arrow control
Parameters
None.
Requires
- [variable]
control-offset
- [variable]
control-offset-large
control-prev
@mixin control-prev() { ... }
@mixin control-prev() { left: settings.$control-offset; @include media.query('min-md') { left: settings.$control-offset-large; } }
Description
"Previous" arrow control
Parameters
None.
Requires
- [variable]
control-offset
- [variable]
control-offset-large
control-icon
@mixin control-icon() { ... }
@mixin control-icon() { width: settings.$control-icon-size; height: settings.$control-icon-size; }
item
@mixin item() { ... }
@mixin item() { margin-bottom: 0; scroll-snap-align: start; }
Description
Carousel item container
Parameters
None.
view-all
@mixin view-all() { ... }
@mixin view-all() { align-self: center; }
Description
Carousel "view all" item styles
Parameters
None.
view-all-link
@mixin view-all-link() { ... }
@mixin view-all-link() { @include typography.style-as('paragraph-2'); padding-left: spacing.get('s4'); padding-right: spacing.get('s4'); display: block; color: settings.$view-all-link-text-color; text-align: center; text-decoration: none; }
Description
Carousel "view all" link styles
Parameters
None.
Requires
- [function]
get
- [variable]
view-all-link-text-color
view-all-button
@mixin view-all-button() { ... }
@mixin view-all-button() { @include kib-button-new.generate-styles('action', 'tertiary', 'large', true); margin: spacing.get('s2'); }
view-all-icon
@mixin view-all-icon() { ... }
@mixin view-all-icon() { display: block; width: settings.$view-all-icon-size; height: settings.$view-all-icon-size; }
Variables
gap
$gap: spacing.get('s4') !default;
gap-small
$gap-small: spacing.get('s2') !default;
max-small
$max-small: spacing.get('s4') !default;
control-size
$control-size: kib-button-new.$default-height !default;
Description
Size of arrow control buttons
Type
Number
Used by
- [mixin]
control
- [mixin]
control
- [mixin]
title-with-back
control-icon-size
$control-icon-size: kib-core.dimensions-get('large') !default;
control-offset
$control-offset: spacing.get('s2') !default;
Description
Default offset from carousel sides for controls (small screens)
Type
Number
Used by
- [mixin]
control-next
- [mixin]
control-prev
control-offset-large
$control-offset-large: calc(#{spacing.get('s2')} * -1) !default;
Description
Offset from carousel sides for controls on large screens
Type
Number
Used by
- [mixin]
control-next
- [mixin]
control-prev
view-all-control-size
$view-all-control-size: unit.rem(56px) !default;
Description
"View All" control size
Type
Number
view-all-link-text-color
$view-all-link-text-color: color.get('text', 'primary') !default;
view-all-icon-size
$view-all-icon-size: $control-icon-size !default;