veza/apps/web/docs/BUTTON_VARIANT_USAGE_AUDIT.md
senke 7463138b64 consistency: audit button variant usage (Action 9.3.1.1)
- Audited all 9 button variants in design system Button
- Found 5 variants in use (128 total uses):
  - ghost: 71 uses (54.2% - most popular)
  - outline: 36 uses (27.5%)
  - secondary: 13 uses (9.9%)
  - default: 4 uses (3.1%)
  - destructive: 4 uses (3.1%)
- Found 4 unused variants (zero usage):
  - neon, glass, premium, link
- Identified 28 legacy Button uses with variant="primary"
- Created comprehensive audit report: apps/web/docs/BUTTON_VARIANT_USAGE_AUDIT.md
- Includes usage statistics, analysis, and migration strategy
2026-01-16 01:32:40 +01:00

5.1 KiB

Button Variant Usage Audit

Date: 2025-01-27
Action: 9.3.1.1 - Audit button variant usage
Purpose: Identify usage count for each button variant to determine which variants can be removed

Summary

  • Design System Button Location: apps/web/src/components/ui/button.tsx
  • Legacy Button Location: apps/web/src/components/base/Button.tsx (different API)
  • Total Variants in Design System: 9 variants
  • Variants Actually Used: 5 variants
  • Variants Unused: 4 variants

Design System Button Variants

Available Variants (9 total)

  1. default - Primary button with cyan background
  2. destructive - Red variant for destructive actions
  3. outline - Outlined button
  4. secondary - Secondary button with steel background
  5. ghost - Minimal button with hover effect
  6. link - Link-style button
  7. neon - Neon effect button
  8. glass - Glass morphism effect
  9. premium - Premium gradient button

Usage Statistics

Variants in Use

Variant Usage Count Percentage Status
ghost 71 54.2% Most popular
outline 36 27.5% Common
secondary 13 9.9% Used
default 4 3.1% Used (default variant)
destructive 4 3.1% Used
TOTAL USED 128 97.7%

Variants Unused

Variant Usage Count Status
neon 0 Unused - Can be removed
glass 0 Unused - Can be removed
premium 0 Unused - Can be removed
link 0 Unused - Can be removed

Legacy Button Variant Usage

Variant Usage Count Notes
primary 28 ⚠️ Legacy Button component variant (not design system)

Note: The variant="primary" usage (28 instances) refers to the legacy Button component in components/base/Button.tsx, which has a different API. These should be migrated to the design system Button with variant="default".

Analysis

  1. ghost (71 uses) - Most common, used for icon buttons, close buttons, and subtle actions
  2. outline (36 uses) - Common for secondary actions and form buttons
  3. secondary (13 uses) - Used for less prominent actions

Least Used Variants

  • default (4 uses) - Despite being the default, it's rarely explicitly specified
  • destructive (4 uses) - Used for delete/destructive actions

Unused Variants

  • neon, glass, premium, link - Zero usage across the codebase
  • These variants can be safely removed without breaking changes

Recommendations

High Priority: Remove Unused Variants

The following variants have zero usage and can be removed:

  1. neon - No usage found
  2. glass - No usage found
  3. premium - No usage found
  4. link - No usage found

Impact: No breaking changes (zero usage)

Medium Priority: Keep Core Variants

Based on usage patterns, the following variants should be kept:

  1. default - Default variant (even if rarely explicit)
  2. outline - 36 uses (27.5%)
  3. ghost - 71 uses (54.2%)
  4. destructive - 4 uses (needed for delete actions)
  5. secondary - 13 uses (9.9%)

Note: The task specifies keeping only default, outline, and ghost. However, destructive and secondary are also in use. This should be reviewed.

Low Priority: Migrate Legacy Buttons

  • 28 instances using variant="primary" from legacy Button component
  • Should be migrated to design system Button with variant="default"

Migration Strategy

Phase 1: Remove Unused Variants (Action 9.3.1.2)

  • Remove: neon, glass, premium, link
  • Risk: LOW (zero usage)
  • Breaking Changes: None

Phase 2: Review Secondary and Destructive

  • secondary: 13 uses - Consider if these can be replaced with outline
  • destructive: 4 uses - Consider if these can be replaced with default + red styling
  • Decision needed: Keep or remove these variants

Phase 3: Simplify Remaining Variants (Action 9.3.1.4)

  • Remove excessive glows from default variant
  • Simplify shadow effects

Files to Review

Files Using Unused Variants

  • None (all unused variants have zero usage)

Files Using Secondary Variant (13 uses)

  • Review if these can be replaced with outline

Files Using Destructive Variant (4 uses)

  • Review if these can be replaced with default + custom styling

Next Steps

  1. Audit complete (Action 9.3.1.1)
  2. Remove unused variants: neon, glass, premium, link (Action 9.3.1.2)
  3. Decide on secondary and destructive variants
  4. Replace removed variants with default/outline/ghost (Action 9.3.1.3)
  5. Remove excessive glows from remaining variants (Action 9.3.1.4)

Notes

  • The design system Button has 9 variants, but only 5 are actually used
  • 4 variants (neon, glass, premium, link) have zero usage and can be safely removed
  • The most popular variant is ghost (54.2% of all variant usage)
  • Legacy Button component still has 28 uses with variant="primary" - these should be migrated separately