Getting Started
Blocks
Components
Device Mocks
Special Effects
Animations
Text Animations
Buttons
import { PixelImage } from "@/registry/magicui/pixel-image";
export function Home() {
return (
<PixelImage
src="/pixel-image-demo.jpg"
customGrid={{ rows: 4, cols: 6 }}
grayscaleAnimation
/>
);
}
Features
- Pixelated image reveal animation
- Customizable grid size and layout
- Supports grayscale-to-color animation
- Adjustable animation duration and delay
- Lightweight and easy to use
Installation
pnpm dlx shadcn@latest add @magicui/pixel-image
Usage
import { PixelImage } from "@/registry/magicui/pixel-image";
<PixelImage src="/pixel-image-demo.jpg" grid="8x8" />
Props
Prop | Type | Default | Description |
---|---|---|---|
src | string | — | The image source URL |
grid | "6x4" | "8x8" | "8x3" | "4x6" | "3x8" | "8x8" | Predefined grid layout |
customGrid | { rows: number; cols: number; } | — | Custom grid layout (overrides grid ) |
grayscaleAnimation | boolean | true | Whether to animate from grayscale to color |
pixelFadeInDuration | number | 1000 | Duration (ms) for each pixel fade-in animation |
maxAnimationDelay | number | 1200 | Maximum random delay (ms) for pixel animation |
colorRevealDelay | number | 1500 | Delay (ms) before revealing color |
Grid Type
// Predefined grid options
"6x4" | "8x8" | "8x3" | "4x6" | "3x8"
// Custom grid example
customGrid={{ rows: 5, cols: 10 }}
Note
- Since the pixelation effect is purely decorative, make sure to provide text alternatives (like descriptions or labels) for any important content shown in the image. This ensures the content is accessible to screen reader users.
Credits
- Credit to @dharminnagar for implementation
Limited Time Offer
Ship Faster with Magic UI ProMagic UI Pro
Stop building from scratch.
Get 8 production-ready templates and 50+ premium components that your users will love.
✓
Next.js 15 + TypeScript ready✓
Copy, paste, customize in minutes✓
Save 100+ hours of development