Notes Workflow Hero
ComponentsHeroesNotes Workflow Hero
HeroesNew

Notes Workflow Hero

A meeting-notes hero with linked source notes, decisions, editable task owners, and a working copy action.

USE IT FORMeeting assistantsNotes and knowledge toolsTeam collaboration productsWorkflow software
React + CSS
Explore the full-width experienceOpen preview
MinuteMeeting notes & action plansInteractive example
FROM NOTES TO NEXT STEPS

Meeting notes. Next steps, sorted.

Turn meeting notes into decisions and assigned tasks, with the context attached.

01 Notes02 Decisions03 Tasks
Your meeting workspaceLOCAL PREVIEW
SOURCE NOTES01

Product review

Design + Engineering · Tuesday, 10:00

  1. Leah

    Keep the launch to one workspace. Multi-workspace can wait until the next release.

  2. Omar

    The invite flow needs a clearer empty state. I’ll have a prototype ready on Thursday.

  3. Leah

    Use email invitations for launch. We can add shareable invite links later.

  4. Mina

    I’ll test the invitation prototype with five customers on Friday.

Read-only meeting example
ACTION PLAN02

The next steps.

Prepared

Launch one workspace with email invitations. Validate the new invite flow before release.

Decisions 2

  • Launch with a single workspace.

  • Use email invitations for launch.

Assigned tasks 2

  • Prototype invite empty state by Thursday.

  • Test with five customers on Friday.

Edit an owner. Keep the context.
Sample data · no recording or AI service
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/notes-workflow-hero.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 { NotesWorkflowHero } from '@/components/anticraft/NotesWorkflowHero';

export function Example() {
  return (
    <NotesWorkflowHero
      brand="Minute"
      title={'Meeting notes.\nNext steps, sorted.'}
      description="Turn meeting notes into decisions and assigned tasks, with the context attached."
      action={{ label: 'Explore the product', href: '/product' }}
      samples={[
        {
          id: 'review', revision: 1, title: 'Product review',
          context: 'Design + Engineering · Tuesday, 10:00',
          notes: [
            { id: 'scope', speaker: 'Leah', text: 'Launch one workspace. Multi-workspace can wait.' },
            { id: 'prototype', speaker: 'Omar', text: 'I’ll prototype the invite empty state by Thursday.' },
          ],
          summary: 'Launch one workspace and improve the invite empty state.',
          decisions: [
            { id: 'launch', text: 'Launch with a single workspace.', sourceId: 'scope' },
          ],
          tasks: [
            { id: 'invite', text: 'Prototype invite empty state by Thursday.', owner: 'Omar', sourceId: 'prototype' },
          ],
        },
      ]}
    />
  );
}
03

Props

PropTypeDefaultDescription
titlestringRequiredThe visible h2. Newlines preserve intentional breaks while the text can wrap naturally. Keep it short so the product remains visible on short desktops.
samplesreadonly NotesWorkflowSample[]RequiredOriginal examples with unique id, optional revision, title, optional context, notes, summary, decisions, and tasks. Supply the structured result yourself: this component does not infer results or call AI. An empty array displays a safe empty state and disables Run. The first example initially displays its prepared result; changing examples requires pressing Run example.
samples[].notesreadonly NotesWorkflowSourceNote[]RequiredRead-only source notes, each with unique id, text, and optional speaker. Do not include private meeting data in a public landing page. Source references focus the corresponding note without changing the meeting selection.
samples[].decisionsreadonly NotesWorkflowDecision[]RequiredDecisions with unique id, text, and sourceId matching a note in the same sample. The numbered source button is omitted for unmatched IDs. Empty decisions and tasks are supported.
samples[].tasksreadonly NotesWorkflowTask[]RequiredTasks with unique id, text, owner, and sourceId matching an original note. Native inputs edit each owner locally; empty owner text is copied as Unassigned. Running the example again restores the supplied owners. Edits are not persisted or submitted.
samples[].revisionstring | numberundefinedChange this value when replacing an example’s content. Selection is stored by ID and derived from current props. Generated state and copy feedback are scoped to the current sample content and revision, so removing or updating a sample cannot display a stale result.
descriptionstringundefinedOptional single-sentence product explanation below the title.
brandstring'Minute'The text wordmark. Replace it with your own product name; the simple inline mark is part of the component source.
action{ label: string; href: string }undefinedOptional ordinary product link beside the example action. Run the example performs a deterministic local preparation and focuses the result region; it does not open a sign-up flow or imply a connected service.
classNamestring''Additional classes. Theme --ac-notes-workflow-paper, --ac-notes-workflow-ink, --ac-notes-workflow-accent, --ac-notes-workflow-line, --ac-notes-workflow-muted, and --ac-notes-workflow-heading-font. The serif font falls back to Georgia; no remote fonts are fetched by this component.
04

Motion & accessibility

Considered by default.

The first sample includes its prepared result. Selecting another meeting clears the old result; Run example reveals that meeting’s supplied summary, decisions, and tasks immediately. No delayed simulation, recording, upload, or AI request occurs. Owner changes appear in the actual copied summary. Clipboard success is announced only after writeText resolves. Unavailable or rejected clipboard access reveals a read-only summary and a native selection button for manual copying. Outstanding clipboard results are ignored after selection, rerun, or owner changes. Source-reference buttons focus and highlight the matching original note. Every instance has unique useId relationships. Desktop places copy beside two readable note sheets; narrow containers stack the product below the introduction, and phones stack source notes before the result. All content flows naturally and remains scrollable. Only subtle hover and source-highlight transitions are used, and reduced motion removes them.

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

05

Inspiration

Granola’s live SaaS landing page informed the warm surface, serif headline, and notes-to-result product demonstration. Minute uses an original composition, meeting data, and local interaction model. It does not use Granola artwork or connect to an AI service.

Visit Granola

The linked site is the design or content reference. See the repository for demo artwork credits.