Liquid Glass Orb

A liquid glass orb for AI interfaces, with animated agent states, voice response, customizable glass material, and six color palettes.

Controls

Agent

State
Paused
Entrance animation

Colors

Preset
Color distribution
Preserve whites
Base color
Primary color
Secondary color
Accent color

Motion

Flow type
Speed
Distortion
Animated distortion
Cluster count
Cluster intensity
Cluster size
Pattern scale
Spot size
Rotation (deg)
Seed

Appearance

Size (px)
Softness

Glass

Relief
Refraction
Roughness
Reflection
Caustics
Dispersion

Grain

Grain style
Grain amount
Grain size (px)

Properties

37 properties
PropertyTypeDefaultDescription
presetLiquidGlassOrbPresetmonochromePresets apply their colors and default cluster count: 7.2 for Tide and Monochrome, 3 for the others. Azure, Indigo, Mint, Coral, Scarlet and Fuchsia preserve the current seed and playback position. Explicit props override preset values.
stateLiquidGlassOrbStateidleidle, listening, thinking, searching, speaking, success or error. Idle uses the original fluid glass distortion; Speaking adds a subtle voice speed boost, renews local organic wrinkles and pulses the circle. Thinking offers a two-arm spiral, concentric ripples or curved scanning folds across the entire orb, selected with thinkingAnimation. Searching offers a lens on a 45-degree tilted oval that accelerates again before each lap ends with the saved custom Bezier motion, or a small lens that moves continuously through searchingAnimation. The lens keeps moving and joins each lap with continuous velocity. Error holds a stationary cross. Other states use recognizable glass patterns with fixed material settings.
audioLevelnumber0.55Normalized microphone or assistant output envelope, 0–1. Active during listening and speaking.
getAudioLevel() => number—Sampled once per visible frame. Feed live audio without rendering React for each audio sample.
refLiquidGlassOrbHandle—setAudioLevel(level) updates the voice envelope; reset() restarts the animation.
animateEntrancebooleantrueGrow from 8% to full size with power4.out over 1.2 seconds once the first frame is ready and visible. Set false to show the orb immediately. Respects reduced motion.
thinkingAnimationselectripplesGlass pattern used during Thinking: a two-arm spiral, concentric ripples, or curved scanning folds. Changes blend smoothly.
searchingAnimationselectlensGlass pattern used during Searching: Lens overlaps power3.out laps, starts picking up speed again at two o'clock before each lap ends with continuous forward motion; Small lens glides continuously along a rounded path with gentle changes in pace. Changes blend smoothly.
preserveWhitesbooleantrueKeep white and near-white palette areas bright and neutral under the glass. Turn off to restore the previous color treatment.
intensitynumber1Strength of the voice response in Listening and Speaking. Changes microphone response, voice-driven size and subtle wrinkle renewal without scaling state-icon relief.
speednumber1.5Speed of the flowing colors. Zero holds the current frame.
flowTypeselectdriftChoose a seamless morphing cycle (Drift), a circulating vortex, or rolling waves.
distortionnumber0.8Bend the glass surface into flowing folds and organic reliefs. Supports values from 0 to 8.
animateDistortionbooleantrueKeep the distortion points moving. Turn off to fix them at their current positions while colors continue flowing.
clusterCountnumber7.2Density of flowing glass clusters. Defaults to 7.2 for Tide and Monochrome, and 3 for all other presets. Higher values create more, smaller reliefs; zero disables the additional cluster field. Supported range: 0 to 64.
clusterIntensitynumber3How strongly the clusters contribute to the glass relief and flowing folds. Zero removes it. Supported range: 0 to 12.
clusterSizenumber22.5Scale the glass clusters while keeping folds distributed across the surface. Supported range: 0.25 to 32.
scalenumber0.23Higher values produce smaller, more numerous color pools.
spotSizenumber1.15Resize color patches within the flow. Higher values make larger patches; pattern scale and distortion stay unchanged.
rotationnumber0Rotate the gradient composition.
seednumber145A reproducible variation of the gradient composition.
sizenumber250Maximum width for a bounded shape. Background fills its parent container.
softnessnumber0.31Soften the shoulders of the raised glass surface.
reliefnumber2.94Height of the glass relief. Zero produces a flat surface; higher values deepen the rounded forms and their reflections.
refractionnumber0.65How strongly the raised glass displaces the flowing colors visible behind it.
roughnessnumber0Low values create narrow polished reflections. Higher values spread the highlights into a frosted finish.
reflectionnumber1.3Strength of the reflected studio lights. One preserves the original glass finish; zero removes reflections without changing the flow.
causticsnumber0Add light concentrations transmitted through the relief. Zero keeps the original finish; higher values reveal brighter flowing caustics.
dispersionnumber1Separate refracted red and blue color channels along the glass folds. Zero keeps the original colors.
grainnumber0.3Strength of the fine grain. Zero removes it completely.
grainModeselectfineSelect fine motes, larger flecks, rough texture, or monochrome noise.
grainSizenumber1Grain size in CSS pixels, consistent across screen densities.
colorDistributionnumber0Left: more color. Right: more light background. Zero uses the default distribution. Uses your Background color.
baseColorcolor#ffffffColor used by the procedural gradient.
colorAcolor#000000Color used by the procedural gradient.
colorBcolor#4d4d4dColor used by the procedural gradient.
colorCcolor#a9a9a9Color used by the procedural gradient.

Usage

Usage
import { LiquidGlassOrb } from './components/liquid-glass-orb';

export function Example() {
  // Drive state from your agent; audioLevel is a normalized 0–1 voice envelope.
  return <LiquidGlassOrb
    baseColor={"#ffffff"}
    colorA={"#000000"}
    colorB={"#4d4d4d"}
    colorC={"#a9a9a9"}
    seed={145}
    startTime={18}
    speed={1.5}
    distortion={0.8}
    clusterCount={7.2}
    clusterIntensity={3}
    clusterSize={22.5}
    scale={0.23}
    spotSize={1.15}
    rotation={0}
    softness={0.31}
    relief={2.94}
    refraction={0.65}
    roughness={0}
    reflection={1.3}
    caustics={0}
    dispersion={1}
    colorDistribution={0}
    grain={0.3}
    grainSize={1}
    paused={false}
    animateDistortion={true}
    grainMode={"fine"}
    flowType={"drift"}
    state={"idle"}
    thinkingAnimation={"ripples"}
    searchingAnimation={"lens"}
    preserveWhites={true}
    animateEntrance={true}
    size={250}
    audioLevel={0.55}
  />;
}