Project Preview List
ComponentsProject Preview List
SectionsNew

Project Preview List

An editorial project index with real case-study links, artwork on focus, and useful thumbnails on small screens.

USE IT FORStudio portfoliosArchitecture archivesSelected work
React + CSS
Live component. Go ahead, interact.
01

Installation

Run this in your shadcn-configured React project. The component and stylesheet are added together.

TERMINAL
npx shadcn@latest add http://localhost:5173/r/project-preview-list.json

This command uses the current site address. For localhost, keep this preview running on the same computer. Files follow your configured components alias.

02

Usage

Import the component and make the details your own.

TypeScript
import { ProjectPreviewList } from '@/components/anticraft/ProjectPreviewList';

export function Example() {
  return (
    <ProjectPreviewList
      title="Good work. Good people."
      items={[
        {
          id: 'kin', title: 'KIN', category: 'Ecommerce website', year: '2026', href: '/work/kin',
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#b9c396', color: '#2e3b28', fontSize: 64, fontWeight: 600 }}>KIN</div>,
        },
        {
          id: 'forma', title: 'FORMA', category: 'Brand identity', year: '2026', href: '/work/forma',
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#c85332', color: '#f9e7c6', fontSize: 48, fontFamily: 'Georgia, serif' }}>Forma.</div>,
        },
        {
          id: 'folio', title: 'FOLIO', category: 'Product design', year: '2025', href: '/work/folio',
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#c9b9dc', color: '#44315b', fontSize: 48 }}>folio↗</div>,
        },
      ]}
    />
  );
}
03

Props

PropTypeDefaultDescription
itemsProjectPreviewListItem[]RequiredProjects with a unique id, title, category, href and decorative ReactNode media, plus an optional year. Replace the sample /work/… paths with real case-study routes. Empty collections show a short empty state.
titlestring'Project index'The section heading and accessible name.
classNamestring''Additional classes. Customize --ac-preview-ink, --ac-preview-muted, --ac-preview-line, --ac-preview-accent, --ac-preview-radius and --ac-preview-caption-background. Below a component width of 500px the side preview becomes a thumbnail beside every row.
item.mediaReactNodeRequiredDecorative artwork or an image with alt="". It fills a 4:5 desktop preview and square compact thumbnails. Both versions are hidden from assistive technology and made inert. Avoid nested controls and place essential information in the text fields.
item.hrefstringRequiredA real destination followed by the native anchor, preserving modified clicks and open-in-new-tab behavior. Hover and keyboard focus only change the decorative artwork.
04

Motion & accessibility

Considered by default.

The first project’s artwork is visible initially. Hover or keyboard focus changes the side preview with a brief opacity and scale entrance; the last preview stays visible when the pointer leaves. The compact layout shows every thumbnail directly, so no content depends on hover. Normal Tab and Enter navigate links. Reduced motion removes artwork and arrow transitions. Demo links open local case studies.

Use semantic content and meaningful labels in your composition. Check contrast and keyboard behavior with your own styles and content.

05

Inspiration

Emotion’s numbered project index and visible project categories informed this editorial list structure. Anticraft’s preview behavior, artwork, responsive thumbnails and React implementation are original.

Visit Emotion Agency

The component source and demo artwork are original to Anticraft UI. The linked site is the design or content reference.