Background Pattern
A decorative pattern behind your content, with an optional cursor-following spotlight.
Usage
BackgroundPattern is a <div> wrapper that paints a subtle, masked pattern behind its children.
Pick a texture with the variant prop (dots by default, grid, hexagons, rings or checkerboard)
and tune its density with cellSize. The pattern is drawn from the --pattern-color CSS variable
(defaulting to the --color-border-intense token) via currentColor masks, so it stays muted against
either light or dark surfaces; override that variable to recolor it.
Enable spotlight to add a radial highlight that follows the cursor and brightens the pattern nearby;
pass true for the default, a number/length to size it, or { persistent: true } to keep it always
on. The decorative layers are aria-hidden, so they never interfere with assistive tech - your
children remain fully accessible, and the wrapper accepts className, style, and any native
<div> attributes.
Examples
Variants
5 textures cover the common cases: scattered dots, a grid with a dot at every intersection, a
hexagons mesh, staggered rings and a checkerboard. Each carries a sensible default cell size,
drawn at low opacity so content stays legible. For the checkerboard, cellSize sets the size of one
square.
Spotlight
Set spotlight to add a cursor-following highlight that brightens the pattern near the pointer and
fades out when the cursor stops. Move your cursor over the panel to see it react.
Persistent / sized spotlight
Pass an object to keep the highlight always on with { persistent: true } and size it with size
(a number in px, or any CSS length). A persistent spotlight skips the fade entirely.
Custom cell size
cellSize overrides the per-variant default to make the texture denser or airier. The grid and
rings strokes stay the same width at any size, so only the spacing changes. Here the same grid
variant is shown at 2 scales.
Custom color
The pattern reads its color from the --pattern-color CSS variable, which defaults to the muted
--color-border-intense token. Set it to recolor the texture - point it at a theme token like
var(--primary), or drop in any custom value. Here a bluish-purple hex tints the pattern and its
spotlight, paired with a matching surface mixed from the same hue and var(--background) via
color-mix, so the wash stays subtle in both light and dark mode.
API reference
BackgroundPattern renders a <div> and forwards every remaining native <div> attribute. The
decorative pattern and spotlight layers are aria-hidden. Set the --pattern-color CSS variable (via
className or style) to recolor the texture - see Custom color.
Accessibility
- The pattern and spotlight layers are
aria-hiddenandpointer-events-none, so they're skipped by assistive tech and never intercept clicks. - Content is wrapped, not replaced - your
childrenstay in the normal flow and fully accessible. - The pattern is intentionally low-emphasis; ensure your foreground content keeps sufficient contrast against the background for it to stay readable.
- The cursor spotlight honors
prefers-reduced-motion- it's forced persistent (fade-free) when a user requests reduced motion.