Carousel
Put .wckd-carousel on the same node as .columns; each slide is a direct .column child. wckd-ui.js adds prev/next + dots unless you add hide-arrows, hide-dots, or hide-nav. Modifiers: .vertical (+ height utility), .peek-left / .peek-right, .ticker + data-ticker-px-sec (tickers never get arrows/dots). Optional data-threshold on the root only when slides contain .animate.
Download & setup
Load the kit from Get Started; use the style guide for utilities and tokens while wiring this component.
Default implementation
Standard carousel
Default: arrows + dots. Add hide-arrows, hide-dots, or hide-nav to strip part or all of that chrome.
Markup
<div class="wckd-carousel columns count-1 gap filled-fade rounded padded height-20">
<div class="column">Slide 1</div>
<div class="column">Slide 2</div>
<div class="column">Slide 3</div>
<div class="column">Slide 4</div>
</div>
Configuration options
Each variant keeps the same markup contract as the default; add only the classes or attributes named in the heading.
hide-arrows (dots only)
Add hide-arrows on the .wckd-carousel row so wckd-ui.js skips .wckd-carousel-nav; the dot row still renders so people can jump to a slide.
Markup
<div class="wckd-carousel columns count-1 gap filled-fade rounded padded hide-arrows">
<div class="column">Slide A</div>
<div class="column">Slide B</div>
<div class="column">Slide C</div>
</div>
hide-dots (arrows only)
Add hide-dots so wckd-ui.js skips .wckd-carousel-dots; prev/next buttons still render when the layout has room for them.
Markup
<div class="wckd-carousel columns count-1 gap filled-fade rounded padded hide-dots">
<div class="column">Slide A</div>
<div class="column">Slide B</div>
<div class="column">Slide C</div>
</div>
hide-nav (no arrows or dots)
Add hide-nav so neither .wckd-carousel-nav nor .wckd-carousel-dots is added; movement is swipe, scroll, or keyboard focus on the slide strip.
Markup
<div class="wckd-carousel columns count-1 gap filled-fade rounded padded hide-nav">
<div class="column">Slide A</div>
<div class="column">Slide B</div>
<div class="column">Slide C</div>
</div>
Peek variation
Combine peek-right and peek-left on the carousel row so a slice of the adjacent slide stays visible; pair with hide-nav here so peek signals more content without arrows or dots.
Markup
<div class="wckd-carousel peek-right peek-left columns count-1 gap filled-fade rounded padded hide-nav height-20">
<div class="column">Starter</div>
<div class="column">Growth</div>
<div class="column">Scale</div>
</div>
Horizontal
count-* on the carousel row sets visible columns; nav stays on unless you add hide-arrows, hide-dots, or hide-nav.
Markup
<div class="wckd-carousel columns count-3 gap filled-fade rounded padded height-20">
<div class="column">Feature 1</div>
<div class="column">Feature 2</div>
<div class="column">Feature 3</div>
<div class="column">Feature 4</div>
</div>
Vertical
Add .vertical and a height utility (e.g. height-25) so vertical scroll is obvious. This demo uses hide-arrows (arrows are tuned for horizontal strips).
Markup
<div class="wckd-carousel vertical columns count-1 height-25 gap-s filled-fade rounded padded hide-arrows height-20">
<div class="column">Milestone A</div>
<div class="column">Milestone B</div>
<div class="column">Milestone C</div>
</div>
Ticker
Add .ticker + data-ticker-px-sec; no arrows/dots. Set aria-label on the root when the motion carries meaning.
One · Two · Three
Four · repeat
Markup
<div class="wckd-carousel ticker columns count-2 gap uppercase padded" data-ticker-px-sec="40" aria-label="Ticker">
<div class="column"><p>One · Two · Three</p></div>
<div class="column"><p>Four · repeat</p></div>
</div>
When to use
- Feature strips, testimonials, and product highlights.
- Peek strips and tickers when you need “more content” cues or ambient motion.
Implementation notes
- Keep slide widths consistent within a carousel for smoother transitions.
- Do not add padding/margin directly on
.wckd-carousel > .columnwhen precise width math matters; put spacing inside a child wrapper or on a parent wrapper around the carousel. - When you show arrow buttons, keep the carousel wrapper as the positioning context (
position: relative) so.wckd-carousel-navlines up with the slide strip. - Respect reduced motion settings for autoplay or ticker behaviour.
- Provide visible controls when carousel content is critical to comprehension.
Developer checklist
- Use
.wckd-carouselwith direct.columnchildren for reliable initialisation. - Add outer spacing on a wrapper around the carousel, and inner spacing inside each column content (avoid changing direct slide box metrics unless intentional).
- Arrows and dots are on by default. Add
hide-arrowsand/orhide-dots, orhide-navfor both. Ticker carousels never add arrows or dots. - If controls look vertically off, verify the wrapper around
.wckd-carouselisposition: relative(or another intended positioning context). - For vertical behaviour, apply a height utility (for example
height-25) so movement is obvious.