Gradient text
The same chain, applied to text with toTextStyle().
new Builder()
.linearGradient({ colors: ['#5EB847', '#CAD328', '#ffd166'], angle: '90deg' })
.toTextStyle()craft().chain().done()
Describe it the way you would say it out loud. Each method adds a layer, and toStyle() turns the chain into a style object.
Start with a soft amber light in the corner.
.radialGradient({ … })Layers added later are drawn below the earlier ones.
.linearGradient({ … })Patterns always sit above the gradients.
.dots({ … })Film grain and a vignette give it depth.
.grain().vignette()One more method, and the whole card floats.
.float()new Builder()
.radialGradient({ from: '#FF7A18', to: 'transparent', position: '75% 25%', colorToPosition: '60%' })
.linearGradient({ from: '#1a0b05', to: '#060302', angle: '160deg' })
.dots({ color: '#FF7A18', size: '24px', opacity: 0.14 })
.grain({ intensity: 2 })
.vignette({ intensity: 0.6, spread: 0.5 })
.float({ duration: '5s' })
.toStyle()Start with a soft emerald glow in the corner.
.radialGradient({ … })A violet light on the other side, layered over the first.
.radialGradient({ … })Layers added later are drawn below the earlier ones.
.linearGradient({ … })Patterns always sit above the gradients.
.stars()One more method, and the whole sky starts to move.
.aurora()new Builder()
.radialGradient({ from: 'rgba(16,185,129,0.85)', to: 'transparent', position: '20% 30%', colorToPosition: '60%' })
.radialGradient({ from: 'rgba(168,85,247,0.6)', to: 'transparent', position: '80% 70%', colorToPosition: '60%' })
.linearGradient({ from: '#04121c', to: '#02060c', angle: '180deg' })
.stars()
.aurora({ duration: '8s' })
.toStyle()A hard light rising from the bottom edge.
.radialGradient({ … })The opposite color from the top, layered over the first.
.radialGradient({ … })A deep navy base keeps the colors electric.
.linearGradient({ … })A thin amber grid gives it a digital floor.
.grid({ … })An inner glow makes the whole card hum.
.glow({ … })new Builder()
.radialGradient({ from: '#ff7a00', to: 'transparent', position: '50% 110%', colorToPosition: '60%' })
.radialGradient({ from: '#2d6bff', to: 'transparent', position: '50% -10%', colorToPosition: '55%' })
.linearGradient({ from: '#06031a', to: '#010008', angle: '180deg' })
.grid({ color: '#ff9f43', size: '24px', opacity: 0.16 })
.glow({ type: 'inner', color: 'rgba(255,159,67,0.45)', amount: '36px' })
.toStyle()A soft candy-pink light, top left.
.radialGradient({ … })A richer raspberry on the opposite side.
.radialGradient({ … })A flat base color under both glows.
.linearGradient({ … })Big, regular dots sit above every gradient.
.dots({ … })One more method, and the whole card floats.
.float()new Builder()
.radialGradient({ from: '#ff9eb3', to: 'transparent', position: '25% 25%', colorToPosition: '55%' })
.radialGradient({ from: '#e8436a', to: 'transparent', position: '90% 90%', colorToPosition: '55%' })
.linearGradient({ from: '#ff6b8b', to: '#ff5c7f', angle: '135deg' })
.dots({ color: '#ffffff', size: '28px', strokeWidth: '4', opacity: 0.35 })
.float({ duration: '5s' })
.toStyle()Every preset is a regular Builder, so you can keep chaining effects, patterns and animations on top.
Text, glass panels, buttons, avatars and loaders. The same chain works on any element.
The same chain, applied to text with toTextStyle().
new Builder()
.linearGradient({ colors: ['#5EB847', '#CAD328', '#ffd166'], angle: '90deg' })
.toTextStyle()A translucent panel that blurs whatever sits behind it.
new Builder()
.linearGradient({ from: 'rgba(255,255,255,0.22)', to: 'rgba(255,255,255,0.06)' })
.blur({ amount: '14px' })
.toStyle()Two glows, one outside and one inside, make a neon outline.
new Builder()
.linearGradient({ from: '#06080f', to: '#0b1020' })
.glow({ color: '#22d3ee', amount: '18px' })
.glow({ type: 'inner', color: '#22d3ee', amount: '12px' })
.toStyle()A conic gradient that spins around a profile picture.
new Builder()
.conicGradient({ colors: ['#5EB847', '#CAD328', '#22d3ee', '#7a5cff', '#5EB847'] })
.rotate({ duration: '4s' })
.toStyle()A light band that slides across placeholder content.
new Builder()
.linearGradient({
colors: ['#1c2620', '#2f3d34', '#1c2620'],
angle: '90deg',
backgroundSize: '200% 100%',
})
.shimmer({ duration: '1.6s' })
.toStyle()A corner light, a dark base, dots and an inner glow.
new Builder()
.radialGradient({ from: 'rgba(94,184,71,0.35)', to: 'transparent', position: '0% 0%', colorToPosition: '70%' })
.linearGradient({ from: '#0c140e', to: '#060906' })
.dots({ color: '#5EB847', size: '18px', opacity: 0.18 })
.glow({ type: 'inner', color: 'rgba(94,184,71,0.35)', amount: '30px' })
.toStyle()Zero dependencies, any framework.
Install it and write your first chain in a minute.