Shimmer
The Shimmer
component provides an animated shimmer effect that sweeps across text, perfect for indicating loading states, progressive reveals, or drawing attention to dynamic content in AI applications.
Generating your response...
Installation
npx ai-elements@latest add shimmer
Usage
import { Shimmer } from '@/components/ai-elements/shimmer';
<Shimmer>Loading your response...</Shimmer>
Features
- Smooth animated shimmer effect using CSS gradients and Framer Motion
- Customizable animation duration and spread
- Polymorphic component - render as any HTML element via the
as
prop - Automatic spread calculation based on text length
- Theme-aware styling using CSS custom properties
- Infinite looping animation with linear easing
- TypeScript support with proper type definitions
- Memoized for optimal performance
- Responsive and accessible design
- Uses
text-transparent
with background-clip for crisp text rendering
Examples
Different Durations
Fast (1 second)
Loading quickly...
Default (2 seconds)
Loading at normal speed...
Slow (4 seconds)
Loading slowly...
Very Slow (6 seconds)
Loading very slowly...
Custom Elements
As paragraph (default)
This is rendered as a paragraph
As heading
Large Heading with Shimmer
As span (inline)
Processing your request with AI magic...
As div with custom styling
Custom styled shimmer text
Props
<Shimmer />
children:
string
The text content to apply the shimmer effect to.
as?:
ElementType
The HTML element or React component to render. Defaults to "p".
className?:
string
Additional CSS classes to apply to the component.
duration?:
number
The duration of the shimmer animation in seconds. Defaults to 2.
spread?:
number
The spread multiplier for the shimmer gradient, multiplied by text length. Defaults to 2.