
OPEN
Displays a responsive grid or list of cards with configurable size, orientation, aspect ratio, and metadata.
The simplest form displays a grid of cards with default settings.

OPEN

PROGRAMME

SUPPORT
Control the grid density with the size prop. Options range from xs (6 columns on desktop) to xl (2 columns max).







Remove card borders and shadows for a cleaner look.

OPEN

PROGRAMME
Convert the grid into a list view perfect for mobile or sidebar layouts.

OPEN

PROGRAMME

SUPPORT
Choose from square, video (16:9), or portrait (3:4) aspect ratios.





Use circular images for profile-style collections.
TEAM
TEAM
TEAM
Cards work beautifully even without images, showing a placeholder icon.
DOCS
NOTES
LINKS
Control the title font weight with the titleStyle prop for different visual emphasis.

FEATURED

NEW

TRENDING
Display only a specific number of items with the limit prop. Perfect for showing previews or "featured" sections.



Combine different props for unique layouts. Here's a horizontal minimal list with circular avatars:
Control where the meta text appears using the metaPosition prop.

FEATURED

POPULAR

NEW

TRENDING
Use the renderMeta prop to display meta information as styled badges from shadcn/ui.



Add interactive elements like buttons or icons to each card using the renderAction prop.

ACADEMY

PROGRAMME
Add additional information at the bottom of cards using the renderFooter prop.


Override collection-wide settings for individual items by adding properties directly to each item.


STANDARD

CUSTOM
Make cards navigational by adding an href property to items. The cards will become semantic links instead of buttons.
Add subtle dividers between card sections using the showSeparators prop.

ORGANIZED

POLISHED
Use clampTitle and clampDescription props to ensure consistent card heights in grid layouts by limiting text to a specific number of lines.

EXAMPLE

EXAMPLE

EXAMPLE
You can also specify custom line counts:


| Prop | Type | Default | Description |
|---|---|---|---|
items | CardCollectionItem[] | - | Array of items to display (required) |
size | "xs" | "s" | "m" | "l" | "xl" | "m" | Grid column density |
variant | "card" | "minimal" | "card" | Card style with or without borders/shadows |
orientation | "vertical" | "horizontal" | "vertical" | Grid layout or list view |
aspectRatio | "square" | "video" | "portrait" | "square" | Image aspect ratio |
imageShape | "square" | "circle" | "square" | Image shape (uses Avatar for circles) |
titleStyle | "simple" | "bold" | "simple" | Title font weight |
limit | number | - | Limit number of displayed items |
className | string | - | Additional CSS classes |
onItemClick | (item, index) => void | - | Click handler for items |
metaPosition | "header" | "footer" | "above-title" | "below-title" | "above-title" | Where to display meta text |
renderMeta | (meta, item) => ReactNode | - | Custom meta renderer (e.g., for Badges) |
renderAction | (item, index) => ReactNode | - | Render action content per item |
renderFooter | (item, index) => ReactNode | - | Render footer content per item |
showSeparators | boolean | false | Show visual separators between sections |
itemAs | "article" | "div" | "article" | Semantic HTML element for cards |
renderItem | (item, index) => ReactNode | - | Custom render function for full control |
clampTitle | boolean | number | - | Clamp title to lines (true = 2 lines, number = custom) |
clampDescription | boolean | number | - | Clamp description to lines (true = 3 lines, number = custom) |
| Prop | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Item title |
description | string | No | Item description |
image | string | No | Image URL |
meta | string | No | Metadata text |
id | string | number | No | Unique identifier (improves key generation) |
href | string | No | Makes card a navigational link |
action | ReactNode | No | Per-item action content (overrides renderAction) |
footer | ReactNode | No | Per-item footer content (overrides renderFooter) |
metaPosition | "header" | "footer" | "above-title" | "below-title" | No | Per-item meta position override |
ariaLabel | string | No | Custom accessibility label |
For maximum control, you can use the CardItem component directly. This is useful when you need custom layouts or want to build cards programmatically.


FEATURED
On This Page
Basic UsageSize VariantsMinimal VariantHorizontal OrientationAspect RatiosImage ShapesWithout ImagesTitle StyleLimiting ItemsCombining StylesMeta PositioningBadge IntegrationAction SlotsFooter ContentPer-Item CustomizationLink CardsVisual SeparatorsText Clamping for Consistent HeightsPropsCardCollectionCardCollectionItemAdvanced: CardItem Component