Hero Carousel
Installation
yarn add @chewy/kib-carousels-styles
Import
@use '~@chewy/kib-carousels-styles/src/kib-hero-carousel/styles' as kib-hero-carousel;
Mixins
root-container
@mixin root-container() { ... }
@mixin root-container() { position: relative; max-width: settings.$max-width; margin: 0 auto; }
container
@mixin container() { ... }
@mixin container() { position: relative; display: block; margin-left: auto; margin-right: auto; width: 100%; min-height: settings.$min-height; overflow: hidden; }
slides-container
@mixin slides-container() { ... }
@mixin slides-container() { display: flex; overflow: hidden; list-style: none; }
Description
Hero carousel slides container
Parameters
None.
slide
@mixin slide() { ... }
@mixin slide() { margin: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; backface-visibility: hidden; > :last-child { margin-bottom: 0; } }
Description
Hero carousel slide element
Parameters
None.
slide-hide
@mixin slide-hide() { ... }
@mixin slide-hide() { display: none; }
Description
Hero carousel slide hidden
Parameters
None.
nav
@mixin nav() { ... }
@mixin nav() { padding-left: spacing.get('s1'); padding-right: spacing.get('s1'); position: absolute; left: 50%; bottom: 0; z-index: 2; transform: translateX(-50%); display: flex; background-color: settings.$nav-background; border-top-left-radius: settings.$nav-border-radius; border-top-right-radius: settings.$nav-border-radius; }
Description
Hero carousel navigation container
Parameters
None.
Requires
- [function]
get
- [variable]
nav-background
- [variable]
nav-border-radius
nav-button
@mixin nav-button() { ... }
@mixin nav-button() { padding: 0; position: relative; width: settings.$pagination-button-size; height: settings.$pagination-button-size; appearance: none; background-color: transparent; border: 0; color: settings.$pagination-button-text-color; cursor: pointer; &:focus { position: relative; &:focus-visible { outline: none; } &::after { $distance: settings.$emphasis-size * -2; position: absolute; top: $distance; left: $distance; right: $distance; bottom: $distance; border: settings.$emphasis-size solid settings.$emphasis-outer-color; box-shadow: inset 0 0 0 settings.$emphasis-size settings.$emphasis-inner-color; content: ''; } } }
Description
Hero carousel navigation button
Parameters
None.
Requires
- [variable]
pagination-button-size
- [variable]
pagination-button-text-color
- [variable]
emphasis-size
- [variable]
emphasis-outer-color
- [variable]
emphasis-inner-color
Used by
- [mixin]
pause
- [mixin]
pagination-button
pause
@mixin pause() { ... }
@mixin pause() { @include nav-button; }
pagination
@mixin pagination() { ... }
@mixin pagination() { padding: 0; display: flex; align-items: center; }
Description
Hero carousel pagination container
Parameters
None.
pagination-button
@mixin pagination-button() { ... }
@mixin pagination-button() { @include nav-button; padding-left: spacing.get('s1'); padding-right: spacing.get('s1'); // Pagination dot element &::before { position: relative; display: block; width: settings.$pagination-dot-size; height: settings.$pagination-dot-size; background-color: settings.$pagination-dot-background-color; border: settings.$pagination-dot-border-width solid settings.$pagination-dot-border-color; border-radius: 50%; content: ''; transition: border-color 200ms; } }
Description
Hero carousel button dot
Parameters
None.
Requires
- [mixin]
nav-button
- [function]
get
- [variable]
pagination-dot-size
- [variable]
pagination-dot-background-color
- [variable]
pagination-dot-border-width
- [variable]
pagination-dot-border-color
pagination-button-active
@mixin pagination-button-active() { ... }
@mixin pagination-button-active() { &::before { background-color: settings.$pagination-dot-active-background-color; } }
Description
Hero carousel button dot active
Parameters
None.
Requires
- [variable]
pagination-dot-active-background-color
control-icon
@mixin control-icon() { ... }
@mixin control-icon() { @include common.chip-icon-styles('transparent'); }
Description
Hero arrow control icons
Parameters
None.
slide-vue-transition
@mixin slide-vue-transition() { ... }
@mixin slide-vue-transition() { transition: transform settings.$slide-transition-duration settings.$slide-transition-timing; @media screen and (prefers-reduced-motion: reduce) { transition: none; } }
Description
Custom slide vue transition for <transition />
component
Parameters
None.
Requires
- [variable]
slide-transition-duration
- [variable]
slide-transition-timing
slide-vue-transition-translation
@mixin slide-vue-transition-translation($reverse) { ... }
@mixin slide-vue-transition-translation($reverse) { @if $reverse { transform: translateX(-100%); } @else { transform: translateX(100%); } }
Description
Custom slide vue transition translation directions
Parameters
parameter Name | parameter Description | parameter Type | parameter Default value |
---|---|---|---|
$reverse | Direction of transition | Boolean | — none |
slide-react-transition
@mixin slide-react-transition() { ... }
@mixin slide-react-transition() { animation: settings.$slide-transition-timing; @if $leave { @if $reverse { animation-name: kib-hero-carousel-leave-left; } @else { animation-name: kib-hero-carousel-leave-right; } animation-duration: settings.$slide-transition-duration * 2; } @else { @if $reverse { animation-name: kib-hero-carousel-left; } @else { animation-name: kib-hero-carousel-right; } animation-duration: settings.$slide-transition-duration * 1; } }
Description
Custom slide React transition
Parameters
None.
Requires
- [variable]
slide-transition-timing
- [variable]
slide-transition-duration
Variables
max-width
$max-width: unit.rem(1440px) !default;
Description
Hero control maximum width
Type
Number
min-height
$min-height: unit.rem(296px) !default;
Description
Component minimum height
Type
Number
Used by
- [mixin]
container
- [mixin]
root-container
- [mixin]
card-root
- [mixin]
root-container
emphasis-size
$emphasis-size: unit.rem(2px) !default;
emphasis-outer-color
$emphasis-outer-color: color.get('action', 'cta', 'primary', 'primary') !default;
emphasis-inner-color
$emphasis-inner-color: color.get('action', 'cta', 'alternate', 'primary') !default;
Type
Color
Used by
- [mixin]
nav-button
nav-background
$nav-background: color.get('static', 'gray1', '900a50') !default;
nav-border-radius
$nav-border-radius: kib-core.dimensions-get('small') !default;
pagination-button-text-color
$pagination-button-text-color: color.get('ui-bg', 'primary') !default;
pagination-button-size
$pagination-button-size: kib-core.dimensions-get('default') !default;
pagination-dot-background-color
$pagination-dot-background-color: transparent !default;
pagination-dot-border-color
$pagination-dot-border-color: $pagination-button-text-color !default;
pagination-dot-border-width
$pagination-dot-border-width: unit.rem(1px) !default;
pagination-dot-active-background-color
$pagination-dot-active-background-color: $pagination-dot-border-color !default;
pagination-dot-size
$pagination-dot-size: kib-core.dimensions-get('small') !default;
control-size
$control-size: unit.rem(36px) !default;
Type
Number
control-offset
$control-offset: spacing.get('s6') !default;
Type
Number
slide-transition-duration
$slide-transition-duration: 600ms !default;
Description
Hero slide transition duration
Type
Number
Used by
- [mixin]
slide-vue-transition
- [mixin]
slide-react-transition
slide-transition-timing
$slide-transition-timing: ease-in-out !default;
Description
Hero slide transition timing function
Type
String
Used by
- [mixin]
slide-vue-transition
- [mixin]
slide-react-transition