Textures
Textures add organic, handcrafted warmth to the design system. They work in two distinct contexts: background textures for repeating patterns, and overlay textures for shapes and diagrams.
All textures are optimised for retina displays (stored at 2× resolution, displayed at 50% size) and
accessed via a unified configuration in src/data/textures.ts.
Background textures
Seamless or large repeating patterns for full-section backgrounds.
Overlay textures
Images clipped to organic shapes for heroes, diagrams, and decorative elements.
Opacity presets
Named opacity values provide consistency and semantic meaning. You can also use numeric values (0-1) for fine control.
Code example
// Using preset names
<PageHero texture="ink" textureOpacity="subtle" />
<DiagramCircle texture="wall" textureOpacity="medium" />
// Using numeric values for fine control
<PageHero texture="ink" textureOpacity={0.12} /> Usage guidelines
When to use background textures
- Full-section backgrounds in Section components
- Repeating patterns across large areas
- Adding tactile warmth to colour schemes
When to use overlay textures
- Hero sections with animated shapes
- Diagram circles and Venn diagrams
- Device frame decorations
- Decorative quote marks
Retina optimisation
All textures follow the watercolour pattern: stored at 2× resolution, displayed at 50% size via
background-size (CSS) or natural scaling (SVG). This ensures crisp rendering on high-DPI displays.
TypeScript support
Import types from @types/design-tokens for autocomplete and type safety:
import type { BackgroundTextureName, OverlayTextureName, TextureOpacityPreset } from '@types/design-tokens';