βββββββββββββββββββββββββββββββββββββββ
β β (green) β β Minimal green dot indicator
βββββββββββββββββββββββββββββββββββββββ
- Location: Fixed top-right corner
- Animation: Pulse effect
- Behavior: Always visible when connected
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Connection lost. Reconnecting... (attempt 3/10) [Dismiss] β
β ββββββββββββββββββββββββββββββββββββββ 30% β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
^ ^ ^
Icon Progress Button
- Background: Yellow/amber gradient (#f59e0b β #d97706)
- Features:
- Animated progress bar (shimmer effect)
- Dismiss button to hide banner
- Shows attempt count (X/10)
- Input: Disabled during reconnection
- Messages: Remain visible
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β You're offline. Messages will be sent when you reconnect β
β [Try Again] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Background: Red/rose gradient (#f43f5e β #e11d48)
- Features:
- Try Again button to retry connection
- Clear offline indicator
- Input: Enabled (messages queued locally)
- Messages: Remain visible
βββββββββββββββββββββββββββββββββββββββββββββββ
β β³ Syncing messages... β
β (spinner animation) β
βββββββββββββββββββββββββββββββββββββββββββββββ
- Background: Blue gradient (#3b82f6 β #1d4ed8)
- Features:
- Animated spinner
- Auto-dismisses when complete
- Behavior: Temporary state during sync
Animation Timeline:
0ms: opacity: 0, y: 20px, scale: 0.95
βββββββββββββββββββ
β β β Below, small, invisible
βββββββββββββββββββ
200ms: opacity: 1, y: 0, scale: 1
βββββββββββββββββββ
β Hello World! β β In position, full size, visible
βββββββββββββββββββ
- Duration: 200ms
- Easing: cubic-bezier(0.25, 0.1, 0.25, 1.0)
- Effect: Fade in from bottom with scale
Animation Timeline:
0ms: opacity: 0.7, x: 10px
βββββββββββββββββββ
β β β Slightly right, semi-transparent
βββββββββββββββββββ
150ms: opacity: 1, x: 0
βββββββββββββββββββ
β Sending... β β β In position, fully visible
βββββββββββββββββββ
- Duration: 150ms
- Easing: ease-out
- Effect: Slide in from right with fade
Animation Timeline:
Checkmark pulses:
0ms: scale: 1.0 β
200ms: scale: 1.3 β (larger)
400ms: scale: 1.0 β
- Duration: 400ms
- Effect: Checkmark scales up and back
Animation Timeline:
0ms: opacity: 1, height: 60px
βββββββββββββββββββ
β Message here β
βββββββββββββββββββ
200ms: opacity: 0, height: 0
β (collapsed)
- Duration: 200ms
- Easing: ease-in-out
- Effect: Collapse and fade
Status Dot:
0ms: scale: 0
β (invisible)
300ms: scale: 1 (spring)
β (green, bouncy entrance)
Name Entry:
0ms: opacity: 0, x: -20px
ββββββββ
300ms: opacity: 1, x: 0
Alice
Status Dot Color:
0ms: green (#22c55e)
β
500ms: gray (#71717a)
β
Then after 5 seconds:
opacity: 1 β 0
x: 0 β -20px (fade left)
Three dots bouncing with stagger:
β β β β Dot 1 up
β β β β Dot 2 up
β β β β Dot 3 up
β β β β Repeat
Stagger: 100ms between each dot
Cycle: 600ms per complete bounce
Backdrop:
0ms: opacity: 0 (invisible)
150ms: opacity: 0.5 (semi-transparent dark overlay)
Modal Content:
0ms: opacity: 0, scale: 0.95 (small, invisible)
βββββββ
β β‘ β
βββββββ
200ms: opacity: 1, scale: 1 (full size, visible)
βββββββββββββ
β Modal β
β Content β
βββββββββββββ
- Backdrop: 150ms fade
- Modal: 200ms scale with expo-out easing
Exit Animation:
0ms: opacity: 1, x: 0
βββββββββββββ
β Page β β Visible, in place
βββββββββββββ
150ms: opacity: 0, x: -20px
βββββββββ
β Pa β Faded, moved left
βββββββββ
Enter Animation:
0ms: opacity: 0, x: 20px
βββββββββ
Page β β Invisible, right
βββββββββ
200ms: opacity: 1, x: 0
βββββββββββββ
β Page β β Visible, in place
βββββββββββββ
Normal: scale(1.0)
ββββββββββββ
β Button β
ββββββββββββ
Hover: scale(1.02)
ββββββββββββββ
β Button β β Slightly larger
ββββββββββββββ
Active: scale(0.98)
ββββββββββ
β Button β β Pressed down
ββββββββββ
- Duration: 100ms
Normal: y: 0, shadow-md
βββββββββββββ
β Card β
β Content β
βββββββββββββ
___shadow___
Hover: y: -2px, shadow-lg
βββββββββββββ
β Card β β Lifted
β Content β
βββββββββββββ
____shadow____
- Duration: 150ms
Normal: color: blue, opacity: 1
Link Text
Hover: color: dark-blue, opacity: 0.8
Link Text β Darker, slightly transparent
- Duration: 100ms
.fade-in- Fade in.fade-out- Fade out
.slide-in-left- From left.slide-in-right- From right.slide-in-top- From top.slide-in-bottom- From bottom
.scale-in- Scale in.bounce-in- Bounce in.shake- Shake animation
.spinner- Rotating spinner.pulse-loading- Pulsing.skeleton- Skeleton loader
.hover-scale- Button scale.card-hover- Card lift.link-hover- Link transition
- Connection banners stack vertically
- Buttons below content
- Reduced padding and font sizes
- Touch-optimized hit areas
- Full banner layout
- Adjusted spacing
- Optimized for touch
- Full-featured layout
- Hover effects enabled
- Optimal spacing and typography
@media (prefers-reduced-motion: reduce) {
/* All animations: 0.01ms (instant) */
}Users with "Reduce Motion" enabled see:
- Instant state changes (no animations)
- Immediate transitions
- Full functionality maintained
| Browser | Animations | Hover | Gradients | Notes |
|---|---|---|---|---|
| Chrome | β Full | β Full | β Full | Recommended |
| Firefox | β Full | β Full | β Full | Recommended |
| Safari | β Full | β Full | β Full | Recommended |
| Edge | β Full | β Full | β Full | Recommended |
| iOS Safari | β Full | β Full | Touch events | |
| Chrome Mobile | β Full | β Full | Touch events | |
| IE11 | Degraded |
Legend:
- β Full support with all features
β οΈ Partial support or degraded- β Not supported
- GPU Acceleration: All animations use
transformandopacity - No Layout Shifts: Avoid animating
width,height,margin - Limit Concurrent: Don't animate too many elements at once
- Profile: Use Chrome DevTools Performance tab
- Test Mobile: Verify 60fps on lower-end devices
Visual Guide Version: 1.0.0
Last Updated: December 13, 2024
Status: Complete