Rings any box in liquid chrome: bands drift round the edge, the edge swells toward the pointer, and thinking runs them faster.
FreeWeb and MobileMotion
Preview
npx shadcn add @fetaui/metal-framePlayground
Ask the agent
Rest, hover and focus it
Thinking
Reading 4 files
Disabled
Unavailable
Idle
Waiting for the next task
Pill
Search componentsCommandK
Circle
Prompt
Build a pricing table with three tiers
Thinking, with skeleton lines
Thinking, reading 4 files
Agent
Nova
AI agent, online
Todo
Today2 of 3
Search
Search componentsCommandK
Shape
Icons animation
Thinking
Disabled
Bend
Motion
Installation
Terminal· bash
npx shadcn add @fetaui/metal-frame
Accessibility
- Decoration only: the field inside carries the label.
- Focus is never only the glow: Metal adds a halo.
- Announce Thinking as text in the field.
Motion
- Light and dark bands drift round the 1.5 px ring, about one turn in 8 s, drawn by a WebGL shader.
- A mouse pointer within 48 px swells the edge up to 3 px toward it and brightens the metal there, easing in about 240 ms. Touch never bends it.
- Thinking runs the bands 2.5 times faster while a soft ink glow breathes over 2.4 s.
- With animated off, reduced motion, disabled or no WebGL, a static CSS chrome ring takes its place.
Responsive behavior
- Box 320 by 120, Pill 44 high, Circle 44 on Web. Pill 48 and Circle 48 on Mobile.
Performance
- The ring is one WebGL shader on a canvas that reaches 10 px past the box. It creates its context only while on screen and releases it 2 s after leaving, so a long page never holds many contexts.
- It stops drawing when the tab is hidden, caps the pixel ratio at 2 and keeps every per frame value out of React state.
- animated={false}, reduced motion and disabled skip WebGL entirely and draw a static CSS ring.
Note for AI
Give your coding assistant the Markdown reference instead of screenshots.
- Import MetalFrame. Props: shape (box, pill, circle), thinking, disabled, animated, plus strength, ringCssPx, borderRadius, paused, bend, innerShadow and theme.
- It wraps anything and adds no field of its own. Box suits a surface, Pill a field, Circle an Avatar.
- Set thinking while a request runs. Use strength 0.55 and paused for an idle surface, as the Todo List frame does.
Related
Liquid RingComponentWraps the prompt composer in a liquid metal ring with an orbiting glow and a voice beam.Bezel FrameComponentSeats a single prompt in a bezel ringed in sky chrome, for a hero search.Aura FrameComponentWarm and cool light leaking from a prompt, for a louder composer.PromptProComponentTwo composers. AI Prompt is the lighter chat composer with commands, files and hints. Prompt Input is the agent composer, where the header names the mode: ask, responding, voice or actions.AvatarComponentA person or workspace as an illustrated photo, initials or an icon, with presence, a story ring and overlapping groups.