Category Card Carousel
Installation
Run the following command
npx vibes@latest add category-card-carousel
Usage
import { type CategoryCardContent } from '@/vibes/soul/primitives/category-card';import { CategoryCardCarousel } from '@/vibes/soul/sections/category-card-carousel';function Usage() { return ( <CategoryCardCarousel cards={cards} emptyStateSubtitle="Try browsing our complete catalog of products." emptyStateTitle="No products found" iconColorScheme="dark" /> );}const cards: CategoryCardContent[] = [ { title: 'Mini Bar Bag', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTo1YzIwNTljMi04NzcwLTRiM2ItYmIzMy02ZTk0ODNkY2M5MDk=/mini-bar-bag.jpeg', alt: 'Mini Bar Bag', }, href: '#1', }, { title: 'Mini Bar Bag', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTphOTFmNjU3Ny0zMDMxLTQzNjYtOWUzNC02MjRkYWQ4OTkzOWI=/mini-bar-bag-2.jpeg', alt: 'Mini Bar Bag', }, href: '#2', }, { title: 'Stem Caddy', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTo5NTIxMmU4MC0xY2EwLTQxZjktOTBiYS0yOWFhYmU3ZTNkMzA=/stem-caddy.jpeg', alt: 'Stem Caddy', }, href: '#3', }, { title: 'Hip Slinger', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTo0MDcxNDBlYy1jYmIzLTRiNjQtOTUxMS1mMTIyMGUyYWY5MjQ=/hip-slinger.jpeg', alt: 'Hip Slinger', }, href: '#4', }, { title: 'Everyday Tote', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTowODYwYTY2NC02NjdjLTRhODYtYTUxYy1jOWExNzI5YTdjMDk=/everyday-tote.jpeg', alt: 'Everyday Tote', }, href: '#5', }, { title: 'Mini Saddlebag', image: { src: 'https://storage.googleapis.com/s.mkswft.com/RmlsZTo4YzEyMjUyOC0zMWU5LTQyYWYtOTFlYi04YjQzNmRiZGVmNDU=/mini-saddlebag.jpeg', alt: 'Mini Saddlebag', }, href: '#6', },];
API Reference
CategoryCardCarouselProps
Prop | Type | Default |
---|---|---|
cards* | ||
aspectRatio | '5:6' | '3:4' | '1:1' | |
textColorScheme | 'light'| 'dark' | |
iconColorScheme | 'light'| 'dark' | |
carouselColorScheme | 'light'| 'dark' | 'light' |
className | string | |
emptyStateTitle | Streamable <string> | |
emptyStateSubtitle | Streamable <string> | |
scrollbarLabel | string | |
previousLabel | string | |
nextLabel | string | |
showButtons | boolean | |
showScrollbar | boolean | |
hideOverflow | boolean | |
placeholderCount | number |
CategoryCardContent
Prop | Type | Default |
---|---|---|
title* | string | |
image | { src: string; alt: string } | |
href* | string |
CSS Variables
This component supports various CSS variables for theming. Here's a comprehensive list.
:root { --category-card-carousel-light-empty-title: var(--foreground); --category-card-carousel-light-empty-subtitle: var(--contrast-500); --category-card-carousel-dark-empty-title: var(--background); --category-card-carousel-dark-empty-subtitle: var(--contrast-200);}
Changelog
2025-07-28
- Renamed to
CategoryCardCarousel
fromCardCarousel