Skip to content
Site volume
Colourway

Print kit

Stamp

A rubber-stamp impression for something that happened: Sent, Shipped, Approved. The seal rests in its own slot.

  • Beta
  • Expressive layer
  • Client leaf
  • Since 0.1.0
  • Press check
Import from@maxgrits/overprint-react/print
On this page

A stamp prints when the visitor or the site did something. The impression is inked art: capitals on Anybody's condensed width, masked by the ink tile and roughened by a filter, blended into the stock and resting at the volume's angle. Seal is the same stamp at half size in a slot the host reserves, never under words. useStampLand() lands it with a thump, specks, the stamp sound and a pulse of the ink field.

Example#

Look of this example
Live render of examples/stamp/basic.tsx

To land a stamp on a card when something happens, call the hook from a client component:

import { useStampLand } from "@maxgrits/overprint-react/print";

const { land } = useStampLand();
land(stampElement, { host: cardElement, seal: true });

Usage#

Use a stamp for something that just happened because someone did it: a form sent, a project shipped, a quote approved (D-E4: caused only). It lands with a thump, a few specks and, with sound on, a THUNK.

  • Server and client. Stamp renders the impression; useStampLand() lands it on a host when the event happens; Seal prints a small one in a slot the host reserves.
  • Words. word is one of the stamp words (Sent, Shipped, Launched, Approved, Booked, Printed, Done, Live) and line adds a short line such as a date.
  • The state also lives in text nearby, in the reading layer: the stamp decorates it.
  • Big. big is for the moment itself, such as the sent screen.

Layer and volume#

Art impression: it may tilt (Quiet 0°, Studio −3°, Press −6°, Rave −9°, clamped to the tilt cap). Quiet: no fall, no specks. Studio: one landing per user action. Press and Rave add specks. Under more contrast it prints solid (no mask, no rough filter).

Anatomy#

The parts of examples/stamp/basic.tsx, numbered:
  1. WordAnybody condensed 900, capitals by CSS..mk-stamp-word
  2. LineA date or a reference..mk-stamp-line
  3. ImpressionInked, masked and roughened; art at its rest angle..mk-stamp

Volume#

  • Quiet

    Square, no fall, no specks.

  • Studio

    Rests at −3°, five specks.

  • Press

    Rests at −6°, seven specks.

  • Rave

    Rests at −9°, nine specks.

Content#

  • Use the stamp words; they are literal status words (D-I2), not jokes.
  • The line is a fact: a date, an invoice number.

Do and don't#

Do

Sent. It is in my inbox now.

A caused event, said in words too.

Don't

A "Welcome" stamp on the home page, where nothing happened.

A stamp with nothing behind it.

A stamp means something just happened. Used as decoration, it teaches readers that stamps mean nothing, and the real ones stop landing.

Accessibility#

  • role="img" with aria-label="{word} {line}"; the face inside is aria-hidden.
  • The state also exists as reading text nearby; status words stay literal.
  • Reduced motion: it lands at rest at once, with no specks and no pulse.

Props#

PropTypeDefaultDescription
word requiredstringnoneOne stamp word, sentence case in the source (`STAMP_WORDS`: Sent, Shipped, Launched …).
linestringnoneA small second line ("23 Oct 2026").
bigbooleannoneThe big stamp (border 0.375 rem, word 4.75 rem).
ink"ink" | "stamp"noneThe stamp ink (default) or the key.
rotatenumbernoneDegrees; default by volume; clamped to ±`--mk-v-tilt-max`.
seednumbernone
childrenundefinednone

Plus 277 React and DOM attributes passed through to the root element (className, ref, aria-*, event handlers and the rest). Generated from StampProps in packages/overprint-react/src/print/stamp.tsx.

Tokens#

System tokens (21)

Its own properties (19)

  • --mk-dx
  • --mk-dy
  • --mk-n
  • --mk-stamp-blend
  • --mk-stamp-border
  • --mk-stamp-colour
  • --mk-stamp-filter
  • --mk-stamp-gap
  • --mk-stamp-k
  • --mk-stamp-leading
  • --mk-stamp-line-size
  • --mk-stamp-line-track
  • --mk-stamp-pad-x
  • --mk-stamp-pad-y
  • --mk-stamp-rot
  • --mk-stamp-size
  • --mk-stamp-track
  • --mk-stamp-wdth
  • --mk-tile-ink-mask

Scanned from its CSS at build and checked against its registry entry; 10 read but not declared there.

Changelog#

Arrived in 0.1.0.

0.1.024 October 2026

  • MinorreactThe print and comic kits, P0 (21 P2-T11 to P2-T15): the art core (seeded halftone, bursts, balloons, lines, krackle, printer's marks, SFX layers, the texture tiles and gen-print-tiles), the print kit (Halftone, Overprint, PrinterMarks, Sticker, Stamp, Seal, useStampLand, Tape, Grain, Misregistration and the .mk-ov second ink, GiantGlyph, ShapeGlyph), the data Cover (grid and score, coverAlt, CoverLegend), the comic registers and kit (Panel, PanelGrid, Balloon, Caption, CornerBox, EditorsNote, ContinuedIn, SFX, SfxBurst, SpeedLines, FocusLines, ImpactStar, KeyPop).
  • PatchreactA ruler range keeps its two values apart, a slider's end figures stay inside it, ComparisonTable and the segmented ThemeToggle name their radios per instance (two on a page no longer uncheck each other), and a Stamp's second line wraps, with the big stamp at 0.6× below 30rem. Read the whole entry