KineticHeadline renders anDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/artisan-developer/llms.txt
Use this file to discover all available pages before exploring further.
<h1> tag where each letter enters individually using Framer Motion’s staggered variant system. The component splits the text prop with Array.from() so multi-byte characters and emoji are handled correctly, then wraps each character in a motion.span. Letters spring upward from below with a subtle rotation, creating a lively hand-stamped feel that suits the artisan theme.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
text | string | required | The headline text to animate letter-by-letter. |
className | string | "" | Additional CSS classes applied to the <h1> wrapper. |
Animation details
The animation is coordinated through two Framer Motion variant objects — one for the containermotion.h1 and one shared by every letter motion.span.
Container variants control sequencing:
| Property | Value |
|---|---|
staggerChildren | 0.05s |
delayChildren | 0.1s |
| State | opacity | y | rotate |
|---|---|---|---|
hidden | 0 | 50px | -20° |
visible | 1 | 0px | 0° |
spring with damping: 12 and stiffness: 100. Lower damping makes the spring bouncier; raising it produces a crisper snap-to-rest.
On hover, each individual letter switches to text-teal-400 via a Tailwind hover class and a 300ms CSS transition — you can hover over single letters independently because each is its own motion.span.
Example usage
className prop is forwarded to the motion.h1 wrapper alongside the internal flex flex-wrap justify-center classes, so you can override font size, color, alignment, and spacing without touching the component file.
Space characters receive a
marginRight: '0.3em' inline style instead of being rendered as literal space spans. This ensures words stay correctly spaced after the text is split into individual characters — without it, adjacent words would collapse together because flexbox ignores whitespace-only spans.