shadcn.io is not affiliated with official shadcn/ui
Drafting paper with a fine grid, where technical drawings (an isometric block, a floor plan, a roof truss, a steel section, a stair, a flange) draw themselves stroke by stroke around the edges, hold, and are erased in the order they were drawn, two or three on the paper at a time. Circles are swept round like a compass, and dimension and centre lines and labels follow each outline. It follows your theme: blue linework on a cool white sheet in light mode, pale blue on deep navy in dark. The grid is CSS gradients; each stroke is a thin line that grows from its start, each circle is revealed by a sweeping clip, and the labels fade in, all on keyframes the install adds to your stylesheet. Nothing runs in the browser, and the browser never restyles or repaints while the drawings come and go.
Use it behind design, engineering or architecture pages. For a plain grid without drawings, use Grid Pattern; for dotted paper, Dot Pattern; for contour lines that also draw themselves, Topography.
Installation
Usage
import { Blueprint } from "@/components/ui/blueprint";Blueprint is a container: give it a size and put your content inside. The paper is part of the look, so it paints its own sheet, light or dark with your theme; text in your foreground colour reads on both.
<Blueprint className="flex min-h-[420px] items-center justify-center">
<h1 className="text-5xl font-semibold">Measure twice, ship once</h1>
</Blueprint>For a backdrop behind the whole page, leave it empty and fix it under everything else:
<Blueprint className="fixed inset-0 -z-10" />Demos
Drafting paper
Graphite on paper: surfaceColor="var(--background)", lineColor="var(--foreground)" and a softened foreground for inkColor put the grid and the drawings in your theme's colours, so it reads as pencil and follows light and dark.
Classic blueprint, faster
The classic look: a royal-blue sheet (surfaceColor) with blue-white lines and ink, in a card. speed={1.5} brings the drawings in faster, and gridSpacing={16} tightens the grid.
Accessibility
The paper is decorative: it's hidden from screen readers and lets every click through to your content. With reduced motion the drawings hold still where they are, a calm sheet with a drawing or two on it, and nothing moves. Nothing flashes: strokes grow over 0.6 seconds, and a drawing holds for several seconds before it's erased stroke by stroke. The drawings sit around the edges, the grid lines are faint (at most 16% of their colour), and the ink is a mid blue on the light sheet and a pale blue on the dark one, so text in your foreground colour keeps its contrast; on the classic blue sheet, use white text.
FAQ
Can I make it look like pencil on paper, or classic blueprint blue?
Yes: pass colours to surfaceColor, lineColor and inkColor, as in "Drafting paper" (theme colours) or "Classic blueprint" (royal blue). You can also set --blueprint-surface, --blueprint-line-color and --blueprint-ink-color from your own CSS.
How often does a drawing appear?
Three places around the edges each alternate two drawings on a 28-second loop, staggered, so a new drawing starts every 4.7 seconds and two or three are on the paper at once. speed={2} halves that.
Can I change the grid?
gridSpacing sets the minor step in pixels (24); every fifth line is a major line, drawn a little stronger.
Will the drawings cover my headline?
They sit around the edges, sized from the box (about half its shorter side), and run off the edge a little in wide or narrow boxes, so the middle stays clear for your content.
Is it smooth, and does it run any script?
No script runs: the grid is CSS gradients, and every stroke, circle and label moves with scale, opacity or clip-path alone, which the compositor animates without the main thread. So the browser doesn't restyle or repaint while the drawings come and go, and it renders on the server.
API Reference
Blueprint
<div> data-slot="blueprint"
gridSpacing?number
The minor grid step, in pixels; every fifth line is a major line. @default 24.
inkColor?string
The drawings' and labels' colour, any CSS colour.
- Default
a drafting blue, lighter on a dark page
lineColor?string
The grid lines' colour, any CSS colour (minor lines show at 8% of it, major lines at 16%).
- Default
a drafting blue, lighter on a dark page
speed?number
How fast the drawings come and go: 2 is twice as fast, 0.5 half as fast.
- Default
1
surfaceColor?string
The paper's colour, any CSS colour.
- Default
a cool white on a light page, deep navy on a dark one
render?ReactElement | ((props: object, state: object) => ReactElement)
Replace the host element or compose it with another component.
- Type
ReactElement | ((props: object, state: object) => ReactElement)
className?string
Merged with the part's classes.
--blueprint-ink-colorstring
The drawings' colour.
--blueprint-line-colorstring
The grid lines' colour.
--blueprint-speedstring
How fast the drawings come and go, a multiplier (1: a 28 s loop).
--blueprint-surfacestring
The paper's colour.
Related


Grid Pattern
GridsThe grid alone


Dot Pattern
GridsDotted paper
- Pro


Topography Background
GenerativeContour lines, also drawn
- Pro


Paths Background
WavesSVG lines in motion
- Pro


A technical board with signals
- Pro


A grid in perspective