Installation
Usage
Features
- Multi-Step Animation: Progress → Completion states
- Spring Physics: Smooth motion transitions
- Status Icons: Rotating spinner and checkmark
- Card Merging: From/To cards merge on completion
- Exchange Rate Display: Real-time rate information
- Transaction ID: Unique identifier display
- Glow Effects: Ambient emerald glow on success
- Tooltip Integration: Additional info on hover
- Automatic Progression: 1.5s timer from start to complete
Animation States
In Progress (0-1.5s)
- Rotating spinner icon
- Separated From/To cards
- “Processing Transaction…” status
- “Calculating exchange rate…” message
- Pulsing glow effect
- Reduced opacity on amounts
Completed (After 1.5s)
- Check icon with entrance rotation
- Merged From/To cards (rounded corners adjusted)
- “Transfer Completed” status
- Transaction ID displayed
- Exchange rate shown
- Full opacity on amounts
Component Structure
Main Container
Animation Details
Card Merging
Spinner Rotation
Check Icon
Currency Information
From (USD)
- Amount: 500.00 USD
- Account: Chase Bank ••••4589
- Icon: Dollar sign ($)
To (EUR)
- Amount: 460.00 EUR
- Account: Deutsche Bank ••••7823
- Icon: Euro sign (€)
Exchange Rate
- Rate: 1 USD = 0.92 EUR
- Updates: Real-time (shown on completion)
Customization Example
Timing Configuration
Icon Components
Progress State
- ArrowUpDown: Main icon (emerald-500)
- ArrowUpIcon: From indicator
- ArrowDownIcon: To indicator
Completed State
- Check: Checkmark (emerald-500, strokeWidth 3.5)
- Border ring around check icon
Glow Effect
Hover States
Amount Cards
- Border color transition
- Emerald accent on hover (when not completed)
- Disabled hover when merged
Info Tooltip
- Icon: InfoIcon (3x3 size)
- Content: Rate update time or “Please wait…”
- Position: Next to exchange rate
Dependencies
motion(Framer Motion)@/components/ui/card(shadcn)@/components/ui/tooltip(shadcn)lucide-react(Icons)@/lib/utils(cn helper)
Easing Functions
Responsive Design
- Fixed height: 420px
- Max width: sm (384px)
- Padding: 24px (p-6)
- Mobile-friendly tap targets
- Touch-friendly spacing