Process Timeline
ComponentsProcess Timeline
SectionsNew

Process Timeline

Make your process easy to understand: readable stages, clear deliverables, and a visual that follows each phase as visitors scroll.

USE IT FORAgency processesProject roadmapsOnboarding journeys
React + CSS

HOW WE GET THERE, TOGETHER.Scroll through the four stages ↓

THE PROCESS

A good process. A better outcome.

04 stages
  1. 1 week

    Discover

    We ask the right questions, get to know your audience, and agree on what success looks like before the first pixel.

    • Workshop
    • Audience insights
    • Project brief
  2. 2 weeks

    Design

    We shape the story, explore a visual direction, and turn it into a prototype your team can click through and discuss.

    • Art direction
    • UI system
    • Clickable prototype
  3. 2 weeks

    Build

    The approved design becomes a fast, responsive website. We connect your content and check the details on real screens.

    • Development
    • CMS setup
    • Device testing
  4. 1 week

    Launch

    We make the final checks, show your team around, and get the site into the world with a clear plan for what comes next.

    • Quality assurance
    • Team training
    • Launch support

ONE CLEAR DIRECTION. EVERY STEP OF THE WAY. ↗

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/process-timeline.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 { ProcessTimeline } from '@/components/anticraft/ProcessTimeline';

export function Example() {
  return (
    <ProcessTimeline
      title="From first thought to launch"
      steps={[
        {
          id: 'discover', title: 'Discover', duration: '1 week',
          description: 'Understand the audience, define the brief, and agree on what success looks like.',
          deliverables: ['Workshop', 'Project brief'],
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#bfcca5', color: '#39482e', fontFamily: 'Georgia, serif', fontSize: 46 }}>Ask better questions.</div>,
        },
        {
          id: 'design', title: 'Design', duration: '2 weeks',
          description: 'Explore the visual direction and make a prototype your team can click through.',
          deliverables: ['Art direction', 'Clickable prototype'],
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#d47b5c', color: '#573829', fontFamily: 'Georgia, serif', fontSize: 46 }}>Room for better.</div>,
        },
        {
          id: 'build', title: 'Build', duration: '2 weeks',
          description: 'Build a responsive website, connect your content, and test on real screens.',
          deliverables: ['Development', 'Device testing'],
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#343d34', color: '#c8d79f', fontFamily: 'monospace', fontSize: 38 }}>&lt;MadeReal /&gt;</div>,
        },
        {
          id: 'launch', title: 'Launch', duration: '1 week',
          description: 'Make the final checks, train your team, and get your site into the world.',
          deliverables: ['Quality assurance', 'Team training'],
          media: <div style={{ display: 'grid', placeItems: 'center', background: '#cecee0', color: '#44415e', fontFamily: 'Georgia, serif', fontSize: 46 }}>Ready for what’s next.</div>,
        },
      ]}
    />
  );
}
03

Props

PropTypeDefaultDescription
stepsProcessTimelineStep[]RequiredOrdered stages with a unique id, title, description and decorative ReactNode media. Every stage’s description stays in the document. Optional duration and deliverables add useful scope. Empty lists show a short empty state; replaced lists fall back to their first available stage until the next scroll measurement.
titlestring'From first thought to launch'The section heading and accessible name.
step.durationstringundefinedA short time estimate such as 1 week or Weeks 2–3, displayed beside the stage number.
step.deliverablesstring[]undefinedConcrete outputs for a stage, presented as a labeled list. All deliverables remain readable; they are never replaced by the decorative scroll preview.
step.mediaReactNodeRequiredDecorative imagery or artwork with no links or controls. Both desktop and inline copies are hidden from assistive technology and made inert. Images should use alt="". Put essential details in title, description and deliverables. The desktop artwork fills a 4:5 surface; compact inline artwork is 220px high (190px below 300px component width).
classNamestring''Additional classes. Customize --ac-process-ink, --ac-process-muted, --ac-process-line, --ac-process-accent, --ac-process-surface and --ac-process-radius. At a component width of 560px or narrower, artwork appears inside every stage and the side preview disappears.
04

Motion & accessibility

Considered by default.

Scrolling marks the current stage and updates a decorative side preview. It follows the nearest vertically scrollable ancestor, or the page when there is none, using passive events and one scheduled measurement per frame rather than a continuous animation loop. The right panel sticks 16px from the scroll viewport’s top and stops at the end of this section, so the following footer remains reachable; allow enough viewport height for the preview. All stage descriptions and deliverables remain visible in a semantic ordered list. Compact layouts show each illustration inline. There is no automatic advance, scroll capture, or required hover. The brief artwork entrance and progress transition are removed for reduced motion. The demo has its own keyboard-focusable scroll region.

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