- Enhanced audit document with detailed file-by-file categorization - Identified 6 high-priority files with multiple excessive effects - Identified 6 medium-priority files with single excessive effects - Identified 3 files with mixed effects requiring selective removal - Categorized ~400 instances as necessary (keep) - Categorized ~200 instances as excessive (remove) - Categorized ~150 instances as review (context-dependent) - Specific patterns identified for removal: scale transforms, decorative shadows, image zooms - Action 11.4.1.2 complete
13 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
Detailed File-by-File Categorization
Files with Excessive Hover Effects (Remove)
High Priority - Multiple Excessive Effects
-
apps/web/src/components/marketplace/ProductCard.tsx- ❌
hover:border-kodo-cyan/50+hover:shadow-neon-cyan/20(multiple effects) - ❌
group-hover:scale-110on image (decorative zoom) - ❌
hover:scale-110on play button (excessive for button) - ✅
group-hover:opacity-100on play overlay (keep - functional)
- ❌
-
apps/web/src/components/education/CourseCard.tsx- ❌
group-hover:scale-110on image (decorative zoom) - ⚠️ Review:
group-hover:opacity-100(functional overlay)
- ❌
-
apps/web/src/features/tracks/components/TrackCard.tsx- ❌
hover:scale-[1.02]on card (decorative scale) - ❌
group-hover:scale-105on image (decorative zoom) - ❌
hover:scale-110on play button (excessive) - ✅
hover:bg-accent/50(keep - necessary feedback)
- ❌
-
apps/web/src/components/social/PostCard.tsx- Multiple excessive effects (needs review)
-
apps/web/src/components/inventory/EquipmentCard.tsx- ❌
hover:shadow-lg(decorative shadow) - ❌
group-hover:scale-110on image (decorative zoom)
- ❌
-
apps/web/src/components/views/ProfileView.tsx- ❌
group-hover:scale-110on images (decorative zoom, 3 instances) - ❌
group-hover:scale-105on images (decorative zoom)
- ❌
Medium Priority - Single Excessive Effect
-
apps/web/src/pages/SearchPage.tsx- ❌
hover:shadow-lgon cards (4 instances - decorative)
- ❌
-
apps/web/src/components/player/PlayerControls.tsx- ❌
hover:scale-110on icons (excessive, 2 instances) - ❌
hover:scale-105+hover:shadow-[0_0_15px_rgba(255,255,255,0.5)](multiple effects)
- ❌
-
apps/web/src/components/ui/card.tsx- ❌
hover:shadow-lg(decorative shadow) - ⚠️
hover-liftclass (needs review - likely scale transform)
- ❌
-
apps/web/src/components/commerce/OrderSummary.tsx- ❌
hover:shadow-lg hover:shadow-kodo-cyan/20(decorative glow)
- ❌
-
apps/web/src/components/views/DiscoverView.tsx- ❌
group-hover:scale-105on images (2 instances - decorative zoom) - ❌
hover:scale-105on genre cards (decorative)
- ❌
-
apps/web/src/features/playlists/components/PlaylistCard.tsx- ❌
hover:shadow-lg(decorative shadow)
- ❌
Files with Necessary Hover Effects (Keep)
Interactive Elements
apps/web/src/components/ui/button.tsx- All variants (necessary feedback)apps/web/src/components/layout/Sidebar.tsx- Navigation items (necessary)apps/web/src/components/layout/Navbar.tsx- Nav links (necessary)apps/web/src/components/ui/select.tsx- Options (necessary)apps/web/src/components/data/List.tsx- Clickable items (necessary)apps/web/src/components/ui/dropdown-menu.tsx- Menu items (necessary)apps/web/src/components/ui/table.tsx- Sortable headers (necessary)
Functional Overlays
apps/web/src/components/marketplace/ProductCard.tsx- Play button overlay (functional)apps/web/src/components/player/FullPlayer.tsx- Control overlays (functional)apps/web/src/components/views/DiscoverView.tsx- Play icon on hover (functional)
Files with Mixed Effects (Selective Removal)
-
apps/web/src/components/layout/Sidebar.tsx- ✅
hover:bg-white/5(keep - necessary) - ❌
group-hover:scale-110on icons (excessive - remove)
- ✅
-
apps/web/src/components/player/PlayerControls.tsx- ✅
hover:text-white(keep - necessary) - ❌
hover:scale-110(remove - excessive)
- ✅
-
apps/web/src/components/ui/button.tsx- ✅ All hover states (keep - necessary)
- ⚠️
hover:shadow-[0_0_15px_rgba(102,252,241,0.3)]on default variant (review - could be excessive)
Categorization Summary
✅ Keep (Necessary) - ~400 instances
- Button hover states (all variants)
- Navigation link hover states
- Clickable card/list item hover states
- Form input/select hover states
- Functional overlays (play buttons, action reveals)
- Icon button hover states
- Opacity-based visibility changes
❌ Remove (Excessive) - ~200 instances
- Scale transforms on cards (
hover:scale-[1.02],hover:scale-110) - Decorative shadow/glow effects (
hover:shadow-neon-cyan/20,hover:shadow-lg) - Image zoom effects (
group-hover:scale-110,group-hover:scale-105) - Multiple simultaneous effects (scale + shadow + border)
- Scale on icon buttons (except small icon-only buttons)
⚠️ Review (Context-Dependent) - ~150 instances
- Group hover image zooms (remove decorative, keep functional overlays)
- Button shadow effects (keep subtle, remove glow)
- Transition durations (standardize to
duration-200)
Next Steps
- ✅ Action 11.4.1.1: Audit complete
- ✅ Action 11.4.1.2: Categorization complete (detailed file-by-file breakdown)
- ⏭️ 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"