
Magic Light
Smart home lighting automation
Good things come to those who wait...
A responsive card grid component for displaying collections of navigation cards with built-in search and pagination.
Basic card grid with image backgrounds and badges. No search or pagination.
Enable search bar and pagination controls for large card collections.

Autonomous lawn care robot

Smart home lighting automation

GPS tracking for pets

Professional photography equipment

Premium audio experience

Outdoor relaxation furniture
Showing 1-6 of 18
Cards with solid color backgrounds and optional watermark icons. Ideal for categories.
Report bugs and problems
Tell us what you love!
Share your suggestions
Ask for help or clarification
Cards can include up to 3 bottom rows: stats, text, and buttons.
Cards with hamburger menus for edit, archive, and delete actions.

Professional photography equipment

Outdoor relaxation furniture
Built-in skeleton loading state for async data fetching.
Automatic empty state display when no items are provided.
There are no items to display.
Essential props for configuring the card grid layout.
| Prop | Type | Default | Description |
|---|---|---|---|
items | PrettyCardItem[] | required | Array of card items to display |
cardMinWidth | number | 280 | Minimum card width in pixels |
cardMaxWidth | number | 400 | Maximum card width in pixels |
gap | 'sm' | 'md' | 'lg' | 'md' | Gap size between cards |
Props for enabling search and pagination features.
| Prop | Type | Default | Description |
|---|---|---|---|
enableSearch | boolean | false | Enable search/filter bar |
searchPlaceholder | string | "Search..." | Placeholder text for search input |
searchFields | (keyof PrettyCardItem)[] | ['title', 'description'] | Fields to search (default: title, description) |
enablePagination | boolean | false | Enable pagination controls |
pageSize | number | 12 | Number of cards per page |
Props for loading states, empty states, and styling.
| Prop | Type | Default | Description |
|---|---|---|---|
isLoading | boolean | false | Show loading skeleton state |
loadingCount | number | 6 | Number of skeleton cards when loading |
emptyIcon | IconDefinition | faFolderOpen | Icon for empty state |
emptyTitle | string | "No items" | Title for empty state |
emptyDescription | string | - | Description for empty state |
className | string | - | Additional class name for wrapper |
import { PrettyCardListBlock, PrettyCardItem } from '@/ui/blocks';
const items: PrettyCardItem[] = [
{
id: 'project-1',
title: 'My Project',
description: 'Smart home automation',
href: '/projects/1',
badge: { label: 'Active', variant: 'success' },
background: { type: 'image', imageUrl: '/project.jpg' },
},
// ... more items
];
<PrettyCardListBlock items={items} />