A flowing quote stream where each avatar reveals its author on hover, with Motion fading and blurring the rest. React component.
Made by AxylHover any avatar to reveal the author while the rest of the quote stream blurs out.
Installation
File Structure
Usage
Props
| Prop | Type | Default |
|---|---|---|
testimonials? | Testimonial[] | - |
avatarSize? | number | 32 |
blurAmount? | number | 5 |
blurOpacity? | number | 0.25 |
fontSize? | number | 30 |
alternate? | InlineTestimonialsAlternateConfig | { pattern: true, opacity: 0.7 } |
interaction? | "hover" | "focus" | "both" | "hover" |
hoveredId? | string | null | - |
defaultHoveredId? | string | null | - |
onHoveredIdChange? | (id: string | null) => void | - |
renderAvatar? | (testimonial: Testimonial, size: number) => ReactNode | - |
label? | InlineTestimonialsLabelConfig | - |
className? | string | - |
classNames? | InlineTestimonialsClassNames | - |
InlineTestimonialsLabelConfig
| Prop | Type | Default |
|---|---|---|
accentColor? | string | "#f97316" |
nameFontSize? | number | 12 |
roleFontSize? | number | 9 |
roleColor? | string | "var(--muted-foreground, #6b7280)" |
roleLetterSpacing? | string | "0.1em" |
roleUppercase? | boolean | true |
offsetX? | number | avatarSize / 2 |
offsetY? | string | "150%" |
slideX? | number | -6 |
transitionDuration? | number | 0.16 |
ease? | Easing | "easeOut" |
Accessibility
By default only mouse hover reveals the author label (interaction="hover"), matching a decorative quote stream. Set interaction="focus" or interaction="both" to also attach tabIndex and onFocus/onBlur to each item, making the label reachable by keyboard (Tab) and screen-reader focus.
When prefers-reduced-motion: reduce is set, useReducedMotion() disables the label's slide-in animation and the blur filter on dimmed items — only a plain opacity fade remains. No extra configuration needed.
The quote text is always in the DOM. The visible author label only mounts on hover/focus (via AnimatePresence), so each item also renders a sr-only "— Name, Role" string right after its quote — screen readers get the attribution unconditionally, without needing to trigger the hover/focus reveal.
Built by Axyl. A motion-first component registry for React.
Last updated: 9/14/2026