BloomArt
Hero example
When to use
Reach for BloomArt when you need the painterly liquid-glass orb that defines Matter's visual identity — typically behind a Glass-card overlay, in a marketing hero, or as a section divider in long-form pages. The five variants map to the four canonical bloom families (peach, lavender, sage, amber) plus one mix (peach × lavender for corner blooms). Choose the variant by lifecycle phase or emotional cue, not by available pixels — the variants have semantic weight.
Don't reach for BloomArt as a generic background image. It's a specific painterly identity — overuse cheapens it. Don't use it for surfaces that need to be themeable (BloomArt is a fixed visual asset, not a tokenised surface). Don't use it for marketing surfaces that need to read on a photographic background either — the painterly orb conflicts with photographic texture.
height: 280px) or pass height directly. The SVG scales via preserveAspectRatio="xMidYMid slice".Anatomy
A single SVG that paints the bloom via radial gradients, masked specular highlights, and Gaussian blurs. All scene data lives in ./bloom-variants.ts; this file owns layout and filter wiring only.
The wrapping <div> accepts standard sizing — style.height is forwarded from the height prop. The SVG uses preserveAspectRatio="xMidYMid slice" so the bloom fills the box without distortion.
Variants:
| Variant | Tone | Use case |
|---|---|---|
1 | peach (default) | Primary brand — warm sunrise. Use for "create" or "active" surfaces. |
2 | lavender | Cool dusk. Use for reflective / contemplative surfaces (settings, profile). |
3 | sage | Lime/green diagonal sweep. Use for "complete" or "verified" surfaces. |
4 | amber | Blue/violet vertical bloom. Use for "manage" or "in progress" surfaces. |
5 | peach × lavender | Rare corner bloom. Reserve for accent moments. |
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| variant | BloomVariant | 1 | — |
| className | string | — | — |
| style | React.CSSProperties | — | — |
| height | number | string | — | Optional explicit height. Accepted for ergonomic call-sites that want to size the bloom inline (e.g. `<BloomArt height={240}/>`). The SVG itself scales via `preserveAspectRatio="xMidYMid slice"`, so height is forwarded into `style.height` on the wrapping `<div>`. When omitted, the bloom fills its parent (the canonical pattern — wrap in a sized container — still works unchanged). |
height is a convenience — the canonical pattern is to wrap BloomArt in a sized container. Both work.
States
BloomArt has no states. It's a static visual.
Density
Density-agnostic. BloomArt is a hero-tier decoration; the site density toggle has no effect.
Themes
In dark, the bloom variants render at adjusted lightness to maintain perceived intensity. In forced-colors, the gradients flatten to a single fill — the painterly identity is lost but the layout is preserved.
Tokens consumed
BloomArt embeds its own color stops in the SVG. It doesn't consume runtime tokens — the variants are fixed visual identities, not themeable surfaces.
Accessibility
- Keyboard interactions. None.
- ARIA roles and properties. SVG carries
aria-hidden="true". Skipped by assistive tech. - Focus order. N/A.
- Screen-reader expectations. Not announced.
- Reduced motion. Static. The optional BloomBackdrop ambient animation respects
prefers-reduced-motion. - Forced colors. Gradients flatten to a single
Canvasfill. - WIG rules. Decorative SVG carries
aria-hidden(decorative-image rule). Noalttext — alt only applies to<img>.
Do / Don't
height directly. The SVG fills its parent.Recipes
This component appears in:
- The marketing site's hero blocks.
- Docs corpus recipe — accent blooms behind hero sections.
Code example
import { BloomArt, Glass } from "@matter/components";
export function HeroBackdrop({ children }: { children: React.ReactNode }) {
return (
<section style={{ position: "relative", height: 480, overflow: "hidden" }}>
<BloomArt variant={1} height={480} />
<div style={{ position: "absolute", inset: 0, display: "grid", placeItems: "center" }}>
<Glass tone="light" padding={48}>{children}</Glass>
</div>
</section>
);
}Source
packages/components/src/BloomArtGlass
Translucent liquid-glass surface — backdrop blur and saturation, top specular highlight, bottom edge shadow, soft radial light overlay. Place over a bloom panel or any saturated background to see the refraction land. `tone` switches the light/dark recipe.
BloomBackdrop
System pattern composing BloomArt positioned absolute behind a section, with an optional frosted `.bloom-veil` overlay. The canonical 'bloom behind content' building block — use for marketing heroes and hero-tier dashboard cards.