Blobs Background
Three large gradient blobs that continuously morph their border-radius, rotate and drift, optionally seen through a heavy frosted pane for a true glassmorphism backdrop. Pure CSS.
glass/effect/blobs-backgroundSource
import type { ReactNode } from "react";
import { cn } from "@/lib/utils";
export interface BlobsBackgroundProps {
children?: ReactNode;
/** Seconds per morph cycle. */
duration?: number;
/** Put a frosted pane over the blobs (true glassmorphism). */
frost?: boolean;
className?: string;
}
/** Three large gradient blobs that morph their border-radius and drift slowly, optionally seen through a frosted pane. Pure CSS. */
export function BlobsBackground({ children, duration = 18, frost = true, className }: BlobsBackgroundProps) {
const blobs = [
"top-[-10%] left-[-5%] size-[55vmax] max-h-[620px] max-w-[620px] bg-gradient-to-br from-da-primary to-da-accent",
"right-[-10%] bottom-[-20%] size-[50vmax] max-h-[560px] max-w-[560px] bg-gradient-to-br from-da-danger to-da-primary [animation-delay:-6s]",
"top-[30%] left-[35%] size-[35vmax] max-h-[400px] max-w-[400px] bg-gradient-to-br from-da-accent to-da-success [animation-delay:-12s]",
];
return (
<div className={cn("relative isolate overflow-hidden text-da-fg", className)}>
<div aria-hidden className="absolute inset-0 -z-10">
{blobs.map((b, i) => (
<span key={i} className={cn("glass-blob absolute opacity-60", b)} style={{ animationDuration: `${duration}s` }} />
))}
{frost && <span className="absolute inset-0 bg-da-surface-2 backdrop-blur-[60px] backdrop-saturate-150" />}
</div>
{children}
<style href="glass-blob" precedence="default">{`
@keyframes glass-blob {
0%, 100% { border-radius: 42% 58% 70% 30% / 45% 45% 55% 55%; translate: 0 0; rotate: 0deg }
33% { border-radius: 70% 30% 46% 54% / 30% 29% 71% 70%; translate: 6% 4%; rotate: 40deg }
66% { border-radius: 30% 70% 70% 30% / 53% 30% 70% 47%; translate: -4% 6%; rotate: -30deg }
}
.glass-blob { animation: glass-blob 18s ease-in-out infinite; filter: blur(8px) }
@media (prefers-reduced-motion: reduce) { .glass-blob { animation: none } }
`}</style>
</div>
);
}
export default BlobsBackground;
modules/glass/effect/blobs-background/index.tsx
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| children | ReactNode | — | Content. |
| duration | number | 18 | Seconds per cycle. |
| frost | boolean | true | Frosted pane over the blobs. |
| className | string | — | Classes. |
Other background variants in Glass
Bubbles Background
Translucent glass bubbles with specular highlights and luminous rims rising and swaying at varied sizes and speeds behind the content. Pure CSS.
Mesh Background
Living mesh gradient: four large SVG blobs (DA primary, accent + two hues) drifting slowly, merged by an SVG goo filter for a liquid feel, heavily blurred and grain-dithered. Wraps any content.
Ribbons Background
Three wide, blurred SVG gradient ribbons (primary, accent, danger) flowing horizontally in slow sine waves, like silk behind frosted glass. Pure CSS animation.
Background in other art directions
Dots Background
Halftone dot field in the DA ink color that pans slowly on a diagonal, radially masked so dots fade toward the edges. Pure CSS, configurable gap, dot size and speed.
Grid Background
Section background: a ruled grid drawn with the DA stroke color that drifts diagonally, solid color blocks that blink in hard steps, and an optional SVG grain layer. Wraps any content.
Shapes Background
Scattered geometric SVG shapes (squares, circles, triangle, plus) in DA colors with ink outlines and hard shadows, bobbing and tilting in stepped (6-frame) motion behind content.
Stripes Background
Diagonal hazard stripes (DA color + ink) marching sideways, either as a full background or as two ruled 'hazard tape' bands at top and bottom. Pure CSS, seamless loop.
Aurora Background
Hero background with three heavily blurred color fields (indigo primary + cyan + violet) drifting slowly over a radially-masked hairline grid, fading into the page at the bottom.
Beams Background
Vertical hairline columns fading at top and bottom, with short primary-colored beams of light falling down some of them at staggered speeds. Pure CSS.
Dot Wave Background
Dot matrix, radially masked, across which a diagonal wave of slightly larger primary-colored dots ripples continuously like a heartbeat. CSS keyframes only.
Grid Glow Background
Hairline grid whose lines light up in the primary color inside a soft radial spotlight that follows the mouse (CSS variables updated on pointer move, no re-render), vignetted to the page color.
Crosshair Background
Measuring crosshair: full-width and full-height hairlines follow the pointer with live mono X/Y coordinates next to the intersection — a design-tool feel for hero areas. Mouse only; hidden otherwise.
Guides Background
Layout-grid backdrop: hairline column guides (like a design tool’s grid overlay) that draw in from top to bottom one after another, with tiny mono column numbers along the top. Pure CSS.
Halftone Background
Print-inspired halftone: a regular ink dot screen fading out across the section via a linear mask, like a newspaper gradient; static, pure CSS.
Word Background
A giant outlined word (hairline stroke, no fill) slowly drifting sideways behind content in an endless loop — typographic texture instead of imagery. Pure CSS.
Dot Matrix Background
Fine dot matrix in the border color; dots near the pointer light up in primary through a radial mask that follows the cursor (pointer devices only).
Flow Lines Background
Horizontal “money flow” lines (smooth SVG curves in the border color) with small primary pulses travelling along them — evokes payment rails. SVG + CSS, static with reduced motion.
Glow Background
Two large blurred primary/accent glows drifting slowly behind content, plus a thin horizon line — restrained corporate ambience. Pure CSS, static with reduced motion.
Grid Background
Faint hairline grid in the border color, radially masked toward one edge, with a few cells softly pulsing in primary — the classic fintech hero backdrop. Pure CSS.
Blob Background
Three soft organic blobs (sage, clay, sand) slowly morphing their border-radius and drifting behind content — a living, breathing backdrop. Pure CSS.
Hills Background
Layered rolling hills along the bottom in three sage tones, each layer drifting sideways at a different pace (gentle parallax), with an optional clay sun rising slowly.
Leaves Background
Leaves drifting down and swaying side to side behind content, in sage/clay tints with varied sizes, speeds and delays. Pure CSS; leaves rest in place with reduced motion.
Paper Background
Recycled-paper surface: the cream background with a fine SVG turbulence grain and a soft warm vignette — static texture that makes flat sections feel tactile.
Confetti Background
Festive background of flat pastel confetti (dots, pills, squares) drifting down slowly with a gentle spin — for success, onboarding-complete and celebration pages.
Polka Background
Soft polka-dot pattern (two offset grids) in a pastel tone, drifting diagonally, with an optional clear center so content stays readable. CSS only.
Shapes Background
Calm background of big flat pastel shapes (circles, pills, rounded squares) floating slowly up and down at different phases. Pure CSS.
Waves Background
Three layered flat pastel waves (lavender, mint, peach) along the bottom of a section, each drifting sideways at its own pace. SVG + CSS.