Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/groovy/llms.txt
Use this file to discover all available pages before exploring further.
GroovyBubble renders a single testimonial or quote as a speech bubble paired with a circular avatar. The bubble floats perpetually in a gentle sinusoidal motion, evoking a thought drifting through the air in a 1970s daydream sequence. Each instance can be positioned independently on the page using yOffset and given a staggered entrance via delay, making it easy to arrange a cluster of testimonials that feel alive without being distracting.
Props
The testimonial text or quote to display inside the speech bubble.
The full name of the person being quoted. The first letter of this value is rendered large inside the avatar circle as a visual initial.
The author’s job title or relationship to the portfolio owner (e.g.
"Senior Designer at Funkadelic Studio"). Displayed in small text below the author name.The background colour of the avatar circle and the bubble’s accent border (e.g.
"#f59e0b"). Should be vivid enough to distinguish each bubble in a multi-bubble layout.Controls which side the bubble enters from on mount.
'left' slides the bubble in from the left; 'right' slides it in from the right. Also determines whether the CSS bubble tail points left or right toward the avatar.The base vertical position (in pixels) for the floating animation. The bubble oscillates between
yOffset and yOffset - 15 continuously. Use this to stagger multiple bubbles vertically.Entrance animation delay in seconds. Stagger this value across multiple
GroovyBubble instances (e.g. 0, 0.2, 0.4) so they don’t all appear simultaneously.Animation Model
GroovyBubble runs two Framer Motion animations simultaneously:
Entrance (fires once on mount)
direction prop (r) determines which side the bubble slides in from; delay (t) staggers the entrance across multiple instances.
Continuous Float (runs forever after mount)
The bubble’s CSS tail is a pure CSS
::before pseudo-element triangle. Its left or right positioning is toggled by a Tailwind class derived from the direction prop. If you apply custom border-radius to the bubble, verify the tail still visually connects to the avatar circle — a mismatch can appear at very large border-radius values.