Card Grid

Responsive grid layout for any card component. Renders children in 2 or 3 columns.

API Reference

PropTypeDefault
columns2 | 33
childrenReactNode

3 Columns

2 Columns

Usage

import { CardGrid } from "@/components";
import { BlogCard } from "@/extensions/features/blog";

<CardGrid>
  {posts.map((post) => (
    <BlogCard key={post.title} {...post} />
  ))}
</CardGrid>

<CardGrid columns={2}>
  {posts.slice(0, 2).map((post) => (
    <BlogCard key={post.title} {...post} />
  ))}
</CardGrid>

Basic Usage

import { CardGrid } from "@/components";

<CardGrid>
  <Card>...</Card>
  <Card>...</Card>
  <Card>...</Card>
</CardGrid>

Source

src/components/CardGrid.tsx
interface CardGridProps {
  columns?: 2 | 3;
  children: React.ReactNode;
}

export function CardGrid({ columns = 3, children }: CardGridProps) {
  return (
    <div
      className={
        columns === 2
          ? "grid gap-6 sm:grid-cols-2"
          : "grid gap-6 sm:grid-cols-2 lg:grid-cols-3"
      }
    >
      {children}
    </div>
  );
}