- Found 887 instances across 239 files - Categorized into 5 usage types (necessary, excessive, group hover, transitions, opacity) - Identified excessive patterns: scale transforms, shadow/glow, multiple simultaneous effects - Documented high-impact files requiring changes - Current: ~887 effects, Target: reduce by 30-40% (remove decorative, keep interactive) - Action 11.4.1.1 complete
8.6 KiB
Hover Effects Audit - Action 11.4.1.1
Date: 2025-01-27
Scope: All hover: usage across the codebase
Total Instances: 887 matches across 239 files
Summary
Hover effects are used extensively throughout the application. This audit categorizes usage to identify opportunities for refinement and applying "Surgical Minimalism" principles.
Categories
1. Necessary Hover Effects (✅ Keep)
Purpose: Essential interactive feedback for buttons, links, and clickable elements
Count: ~400 instances (estimated 45%)
Patterns:
hover:bg-white/5- Subtle background for interactive elementshover:bg-accent- Background change for buttons/linkshover:text-white- Text color change for navigationhover:opacity-100- Icon visibility on hoverhover:border-*- Border color changes for interactive elementshover:underline- Link underline on hover
Examples:
- Button variants (primary, secondary, outline, ghost)
- Navigation links and menu items
- Clickable cards and list items
- Icon buttons
- Form inputs and selects
Files:
apps/web/src/components/ui/button.tsx- Button variantsapps/web/src/components/layout/Sidebar.tsx- Navigation itemsapps/web/src/components/layout/Navbar.tsx- Nav linksapps/web/src/components/ui/select.tsx- Select optionsapps/web/src/components/data/List.tsx- List items
2. Excessive/Decorative Hover Effects (⚠️ Review/Remove)
Purpose: Decorative animations, scale transforms, multiple simultaneous effects
Count: ~200 instances (estimated 23%)
Patterns:
hover:scale-[1.02]orhover:scale-110- Scale transformshover:shadow-*- Shadow effects (especially neon/glow)hover:rotate-*- Rotation transformshover:translate-*- Translation transforms- Multiple simultaneous effects (scale + shadow + color)
Examples:
- Card scale on hover:
hover:scale-[1.02] - Image zoom on hover:
group-hover:scale-110 - Shadow glow effects:
hover:shadow-neon-cyan/20 - Button scale:
hover:scale-110
Files:
apps/web/src/components/marketplace/ProductCard.tsx- Card scale + shadowapps/web/src/components/education/CourseCard.tsx- Card scaleapps/web/src/components/social/PostCard.tsx- Multiple effectsapps/web/src/features/tracks/components/TrackCard.tsx- Scale transformapps/web/src/components/ui/button.tsx- Some button variants with scale
3. Group Hover Effects (⚠️ Review Context)
Purpose: Effects triggered by parent hover (e.g., card hover shows child elements)
Count: ~150 instances (estimated 17%)
Patterns:
group-hover:opacity-100- Show elements on parent hovergroup-hover:scale-*- Scale child on parent hovergroup-hover:bg-*- Background change on parent hover
Examples:
- Card hover reveals play button overlay
- Image zoom on card hover
- Show action buttons on row hover
Files:
apps/web/src/components/marketplace/ProductCard.tsx- Play button overlayapps/web/src/components/player/FullPlayer.tsx- Overlay on hoverapps/web/src/components/views/DiscoverView.tsx- Play icon on hover
4. Transition/Animation Effects (⚠️ Review)
Purpose: Smooth transitions for hover state changes
Count: ~100 instances (estimated 11%)
Patterns:
transition-all- All properties transitiontransition-colors- Color transitionstransition-opacity- Opacity transitionstransition-transform- Transform transitionsduration-*- Transition duration
Examples:
transition-all duration-200- Smooth hover transitionstransition-opacity- Fade in/out effects
Files:
- Most components with hover effects include transitions
5. Opacity-Based Hover (✅ Keep - Subtle)
Purpose: Subtle visibility changes for icons and overlays
Count: ~37 instances (estimated 4%)
Patterns:
hover:opacity-100- Full opacity on hoveropacity-0 hover:opacity-100- Show on hoveropacity-70 hover:opacity-100- Increase opacity
Examples:
- Icon buttons that become fully visible on hover
- Overlay elements that appear on hover
- Close buttons in modals
Files:
apps/web/src/components/ui/alert.tsx- Close buttonapps/web/src/components/player/FullPlayer.tsx- Overlay elementsapps/web/src/components/ui/ErrorDisplay.tsx- Action buttons
Detailed Analysis
Scale Transforms (Excessive)
Count: ~50 instances
Examples:
// ProductCard.tsx
className="... hover:scale-[1.02] ..."
// TrackCard.tsx
className="... hover:scale-[1.02] ..."
// Button play overlay
className="... hover:scale-110 ..."
Recommendation: Remove scale transforms on cards. Keep only for small icon buttons where scale provides clear feedback.
Shadow/Glow Effects (Excessive)
Count: ~30 instances
Examples:
// ProductCard.tsx
className="... hover:shadow-neon-cyan/20 ..."
// Button variants
className="... hover:shadow-[0_0_15px_rgba(102,252,241,0.3)] ..."
Recommendation: Remove decorative shadow/glow effects. Keep only subtle shadows for elevation feedback on buttons.
Multiple Simultaneous Effects (Excessive)
Count: ~40 instances
Examples:
// ProductCard.tsx
className="... hover:border-kodo-cyan/50 hover:shadow-neon-cyan/20 hover:scale-[1.02] ..."
// CourseCard.tsx
className="... hover:bg-white/5 hover:scale-[1.02] hover:shadow-lg ..."
Recommendation: Limit to one primary hover effect per element. Prefer subtle background or border changes over multiple effects.
Group Hover Patterns (Review Context)
Count: ~150 instances
Examples:
// ProductCard.tsx - Play button overlay
<div className="opacity-0 group-hover:opacity-100 ...">
<PlayButton />
</div>
// Image zoom
<img className="... group-hover:scale-110 ..." />
Recommendation:
- ✅ Keep: Play button overlays (functional, reveals action)
- ⚠️ Review: Image zoom effects (decorative, could be removed)
- ✅ Keep: Action button reveals on row hover (functional)
Recommendations
High Priority (Action 11.4.1.3)
-
Remove scale transforms from cards
- ProductCard, CourseCard, TrackCard, PostCard
- Replace with subtle background change only
-
Remove decorative shadow/glow effects
hover:shadow-neon-cyan/20on cards- Keep only subtle shadows on buttons
-
Simplify multiple simultaneous effects
- Limit to one primary hover effect
- Prefer
hover:bg-white/5over scale + shadow + border
Medium Priority
-
Review group hover image zoom
- Consider removing
group-hover:scale-110on images - Keep functional overlays (play buttons)
- Consider removing
-
Standardize transition durations
- Use consistent
duration-200for all hover effects - Avoid
transition-all(prefer specific properties)
- Use consistent
Low Priority
- Maintain necessary hover effects
- Keep all button, link, and navigation hover states
- Keep opacity-based icon visibility
- Keep border color changes for interactive elements
Target Distribution (Surgical Minimalism)
Current: ~887 hover effects across 239 files
Target: Reduce by ~30-40% (remove excessive decorative effects)
Breakdown:
- Keep (~60%): Interactive feedback (buttons, links, navigation, clickable elements)
- Remove (~30%): Decorative effects (scale, excessive shadows, multiple simultaneous effects)
- Review (~10%): Group hover effects (keep functional, remove decorative)
Files Requiring Changes
High Impact (Many excessive effects):
apps/web/src/components/marketplace/ProductCard.tsx- Scale + shadow + borderapps/web/src/components/education/CourseCard.tsx- Scale + shadowapps/web/src/components/social/PostCard.tsx- Multiple effectsapps/web/src/features/tracks/components/TrackCard.tsx- Scale transformapps/web/src/components/views/DiscoverView.tsx- Image zoom on hoverapps/web/src/components/player/FullPlayer.tsx- Multiple overlay effects
Medium Impact:
- All card components with scale transforms
- Components with decorative shadow effects
- Components with multiple simultaneous hover effects
Next Steps
- ✅ Action 11.4.1.1: Audit complete
- ⏭️ Action 11.4.1.2: Categorize hover effects: necessary vs excessive
- ⏭️ Action 11.4.1.3: Remove excessive hover effects
Notes
- This audit is based on pattern matching and may require manual review for context-specific decisions
- Some decorative effects may be intentional for brand consistency
- Interactive feedback (buttons, links) should always have hover states
- Group hover effects that reveal functionality (play buttons) should be kept
- Scale transforms and decorative shadows should be removed for "Surgical Minimalism"