Data matrix

A React component in Beamline's Content & display category.

A DataMatrix (ECC 200, ISO/IEC 16022) any scanner reads: crisp square modules in SVG at any size, the smallest symbol that holds the value (10×10 to 144×144, or 8×18 to 16×48 rectangles), GS1 element strings for pharmacy and lab labels, UTF-8 text marked with ECI. Its accessible name says what it holds; a value it can't hold draws no symbol and says why.

Use it for

  • A label that is printed and scanned: tubes, vials, boxes, bins, parts, assets.
  • A GS1 code for medicines or medical devices (product, expiry, lot, serial).
  • A code that must stay small: a 10 mm tube lid or a narrow side label (shape="rectangle").

Not for

  • A link a person opens with a phone camera app (qr-code: phone cameras read QR first).
  • Decoration: a code nobody is meant to scan.

Anatomy

  • plate (light by default; never wider than its container)
  • quiet zone (2 modules by default)
  • modules: finder L on the left and bottom, clock tracks on the top and right, per data region
  • refused: the reason in place of a symbol

Variants

  • tone: light, auto
  • shape: square, rectangle

States

  • resting (the smallest symbol that holds the value)
  • GS1 (FNC1 first; the accessible name reads the fields in words)
  • rectangle
  • refused: too long, not GS1, empty
  • narrow (shrinks with its container, keeps its shape)

Keyboard

  • Not focusable; pair it with a copy button or the value in text when people need to read it.

Motion

None: a code that moves can't be scanned.

Props

PropTypeDefaultDescription
classNamesDataMatrixClassNames—Classes for the named visual parts; no overrides by default.
value (required)string—What the code holds: an ID ("ST-2300"), a URL, any text (UTF-8, marked with ECI 26 when not ASCII), or a GS1 element string with `gs1`. The smallest symbol that holds it is picked: 10×10 up to 144×144 (1,558 bytes of ASCII, 3,116 digits).
gs1boolean—`value` is a GS1 element string with each AI in brackets, "(01)09506000134352(17)261231(10)LOT42": the code starts with FNC1 and separators are added after variable-length fields, as pharmacy and lab scanners expect.
shapeDataMatrixShape—"rectangle" picks from 8×18 to 16×48, for narrow labels and tube sides (up to 49 bytes); "square" (default) from 10×10 to 144×144.
sizenumber | "fill"—Rendered width in px, quiet zone included; the height follows the symbol's shape. It never grows past its container. "fill" takes the container's whole width. Default 160.
quietZonenumber—Light modules around the symbol, in modules. Scanners need at least 1; default 2.
tone"auto" | "light"—"light" (default): near-black squares on a near-white plate, what printers and every scanner need. "auto" draws in the theme's ink, for a code read only on this screen; in a dark theme that is light on dark (an inverted symbol), which phone readers take but some fixed scanners don't.
labelstring—Accessible name. Defaults to what it holds: the value, or a GS1 code's fields in words ("product 09506000134352, expires Dec 31, 2026, lot LOT42").

Used in

Import

import { DataMatrix } from "@beamline/data-matrix";

Get it

Data matrix is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent

More in Content & display

  • Image compare: Two images in one frame with a divider: drag anywhere, or arrow keys on the handle; horizontal or vertical, with captions.
  • Revision compare: Two revisions of a drawing on one camera: side by side, they pan and zoom together (a crosshair in one pane marks the point under the pointer in the…
  • Live cursors: Who else is working on this, and where: over any shared surface, each person's pointer in the colour their name always gets, with a name flag, gliding…
  • Document viewer: A PDF or a paged document read and marked up in place: page thumbnails beside it, zoom to the width, the page or a percentage, pages by keyboard, a…
  • Video player: A video player on the native <video> element: title bar with an external link and close, centre play with ±10 s, scrub, time, volume, speed, captions…
  • Lightbox: A full-screen image viewer: a thumbnail grows into it and shrinks back, arrows and ←/→ step through the set, Esc or a downward drag closes it.
  • File diff: A change to one file as a unified diff: line numbers, tinted lines, only the changed words marked, long unchanged stretches folded; give rows or just…
  • QR Code: A scannable code set as gradient dots with rounded finder rings and an optional centre mark; a new value ripples out from the centre.
  • Slot text: Text and numbers that roll into their new value on reels, digit by digit from the right; other characters fade. Read as plain text by assistive tech.
  • Text reveal: A headline whose words rise into place once, the first time it scrolls into view; never repeats.
  • Text morph: A short label that becomes its next state letter by letter: shared letters glide into place, new ones arrive, old ones leave.
  • Code block: Code to read and copy: highlighted in the system's colours, numbered, marked lines, long files folded behind “Show all”.
  • Inbox list: Conversations waiting for a person, triaged in place: sender, subject and the first words, time, unread weight, star, labels and attachments, grouped by…
  • Comment thread: A discussion attached to something: replies, reactions, @mentions, editing and deleting your own, resolve that folds the thread.
  • Timeline: What happened, newest first and grouped by day: people with avatars, systems with toned icons, relative times with the exact time on hover, details in…
  • Description list: The details of one record as label and value pairs: beside each other or stacked, in as many columns as the room holds; a copy button arrives on the row…
  • Text shimmer: Ongoing work said in words (“Thinking…”) with a calm band of light passing across them; stops when inactive.
  • Logo Carousel: A wall of logos shown a few at a time: every few seconds the slots turn left to right, each logo leaving upward as the next rises in.
  • Avatar group: A team in a small space: overlapping faces that name themselves on hover or focus, and “+N” naming the rest.
  • Avatar: A person or account in a small space: a photo, or initials on the hue their name always gets; presence dot; circle for people, square for companies.
  • Item: The generic list row: media, title, description, meta and trailing actions; becomes a link or button when interactive.
  • Marker: A labelled point in a stream: a status event with an icon between messages, or a label such as "Today" between two hairlines.
  • Credit: "Designed with Beamline" for a site's footer: the Beamline mark and a quiet line, or a small badge. With your partner code, each new customer's first…
  • Badge: A short status, category or count label: six tones, an icon or a status dot, two sizes.
  • Kbd: Keyboard keys as keycaps, for combinations and sequences (G then A); `mod` resolves to ⌘ or Ctrl per platform, symbols are spoken as words.

Part of Beamline UI: polished, editable React components and complete screens for custom applications. Build your own style from any look; tokens, fonts, radii, motion; not only colours.