bigbullui logobigbullui
Componentdata

FeatureGrid

Feature tiles with icon slot, stamp-on-hover icons, darkening borders and staggered entrance.

Preview

Live Preview

Fast

Lightning fast performance.

Beautiful

Beautiful design that delights users.

Accessible

Built with accessibility in mind.

Installation

Tokens guide →

Add to your project via CLI (zero dependencies, code you own):

npx bigbullui add feature-grid

Or install the full npm package:

npm install bigbullui

Usage

import { FeatureGrid } from "@/components/ui/feature-grid";

<FeatureGrid items={[{ id: "1", title: "Fast", description: "Instant renders." }]} />

Source code

feature-grid.tsx

Zero dependencies (only React + utils). Copy and paste directly into your project:

import * as React from "react";
import { cn } from "./lib/utils";

export interface FeatureItem {
  id: string;
  icon?: React.ReactNode;
  title: string;
  description: string;
}

export interface FeatureGridProps {
  items: FeatureItem[];
  columns?: 2 | 3;
  className?: string;
}

export function FeatureGrid({ items, columns = 2, className }: FeatureGridProps) {
  return (
    <div
      className={cn(
        "grid gap-4",
        columns === 2 && "grid-cols-1 sm:grid-cols-2",
        columns === 3 && "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
        className
      )}
    >
      {items.map((item, index) => (
        <div
          key={item.id}
          className="group rounded-md border border-border bg-card p-5 transition-colors duration-200 hover:border-foreground/40 motion-reduce:transition-none animate-[fade-in-up_0.3s_ease-out_both] motion-reduce:animate-none"
          style={{ animationDelay: `${index * 40}ms` }}
        >
          <span className="inline-flex size-10 items-center justify-center rounded-sm border border-dashed border-border bg-muted text-foreground transition-transform duration-300 ease-out group-hover:scale-110 group-hover:-rotate-6 motion-reduce:transition-none motion-reduce:group-hover:scale-100 motion-reduce:group-hover:rotate-0">
            {item.icon ?? "★"}
          </span>
          <p className="mt-3 font-mono text-[12px] font-bold uppercase tracking-[0.12em] text-foreground">{item.title}</p>
          <p className="mt-1 text-sm text-muted-foreground">{item.description}</p>
        </div>
      ))}
    </div>
  );
}

Props

PropTypeDescription
itemsFeatureItem[]Feature data: id, icon (ReactNode), title, description.
classNamestringAdditional classes.