veza/apps/web/docs/CYAN_USAGE_AUDIT.md
senke e77e71c65a aesthetic-improvements: audit cyan usage across codebase
- Found 965 instances across 217 files
- Categorized into 6 usage types (primary, secondary, decorative, informational, focus, text)
- Created comprehensive audit document with recommendations
- Identified high-impact files for replacement
- Current: ~40% cyan usage, Target: ~20% (80/20 rule)
- Action 11.3.1.1 complete
2026-01-16 10:16:08 +01:00

189 lines
6.4 KiB
Markdown

# Cyan Usage Audit - Action 11.3.1.1
**Date**: 2025-01-27
**Scope**: All `kodo-cyan` usage across the codebase
**Total Instances**: 965 matches across 217 files
## Summary
Cyan is currently used extensively throughout the application. This audit categorizes usage to identify opportunities for reducing overuse and applying the 80/20 rule (80% neutral, 20% color).
## Categories
### 1. Primary Actions (✅ Keep Cyan)
**Purpose**: Main CTAs, primary interactive elements
**Count**: ~150 instances
**Examples**:
- Button default variant: `bg-kodo-cyan` (primary CTAs)
- Active navigation states: `text-kodo-cyan`, `bg-kodo-cyan/10`
- Focus rings: `focus-visible:ring-kodo-cyan`
- Primary links and important actions
- Active tab indicators
- Selected states in lists
**Files**:
- `apps/web/src/components/ui/button.tsx` - Primary button variant
- `apps/web/src/components/layout/Sidebar.tsx` - Active nav items
- `apps/web/src/components/ui/tabs.tsx` - Active tabs
- `apps/web/src/pages/DashboardPage.tsx` - Primary actions
- `apps/web/src/features/library/pages/LibraryPage.tsx` - Primary filters/actions
### 2. Secondary Actions (⚠️ Replace with Steel)
**Purpose**: Non-primary buttons, hover states, borders
**Count**: ~200 instances
**Examples**:
- Hover states on outline buttons: `hover:border-kodo-cyan/50`
- Secondary button borders
- Non-primary interactive elements
- Icon buttons (non-primary)
- Secondary navigation items
**Files**:
- `apps/web/src/components/ui/button.tsx` - Outline variant hover
- `apps/web/src/components/layout/Header.tsx` - Secondary nav items
- `apps/web/src/components/views/FileManagerView.tsx` - Secondary actions
- `apps/web/src/features/tracks/components/TrackFilters.tsx` - Filter buttons
### 3. Decorative/Background (⚠️ Reduce or Replace)
**Purpose**: Backgrounds, borders, decorative elements
**Count**: ~300 instances
**Examples**:
- Backgrounds with opacity: `bg-kodo-cyan/10`, `bg-kodo-cyan/20`
- Decorative borders: `border-kodo-cyan/30`
- Empty state icons: `text-kodo-cyan`
- Section headers: `text-kodo-cyan`
- Card borders and highlights
- Progress indicators (non-critical)
**Files**:
- `apps/web/src/components/ui/KodoEmptyState.tsx` - Icon and border
- `apps/web/src/components/views/StudioView.tsx` - Decorative elements
- `apps/web/src/components/ui/progress.tsx` - Progress bars
- `apps/web/src/components/education/CourseCard.tsx` - Card decorations
- `apps/web/src/components/social/PostCard.tsx` - Card highlights
### 4. Informational (⚠️ Consider Steel or Keep)
**Purpose**: Info alerts, status indicators, metadata
**Count**: ~150 instances
**Examples**:
- Info toasts: `bg-kodo-cyan/10 border-kodo-cyan/30`
- Status indicators
- Metadata highlights
- Info badges
- Loading spinners
**Files**:
- `apps/web/src/components/feedback/Toast.tsx` - Info variant
- `apps/web/src/components/feedback/Alert.tsx` - Info variant
- `apps/web/src/components/ui/Spinner.tsx` - Loading states
- `apps/web/src/components/OfflineIndicator.tsx` - Status indicator
### 5. Focus/Interaction States (✅ Keep Cyan)
**Purpose**: Focus rings, active states, keyboard navigation
**Count**: ~100 instances
**Examples**:
- Focus rings: `focus-visible:ring-kodo-cyan`
- Active states: `active:bg-kodo-cyan`
- Keyboard navigation highlights
- Input focus states
**Files**:
- `apps/web/src/components/ui/input.tsx` - Focus states
- `apps/web/src/components/ui/select.tsx` - Focus states
- `apps/web/src/components/ui/checkbox.tsx` - Focus states
- All form components with focus rings
### 6. Text/Links (⚠️ Review Context)
**Purpose**: Text color, links, headings
**Count**: ~65 instances
**Examples**:
- Links: `text-kodo-cyan hover:text-kodo-cyan`
- Headings: `text-kodo-cyan`
- Emphasized text
- Helper text
**Files**:
- `apps/web/src/components/layout/Header.tsx` - Links
- `apps/web/src/features/auth/components/TwoFactorVerify.tsx` - Links
- `apps/web/src/components/views/ProfileView.tsx` - Text highlights
## Recommendations
### High Priority (Action 11.3.1.2)
1. **Replace secondary action borders** with `kodo-steel`
- Outline button hover states
- Secondary navigation borders
- Non-primary card borders
2. **Reduce decorative backgrounds**
- Replace `bg-kodo-cyan/10` with `bg-kodo-steel/10` for non-primary elements
- Keep cyan backgrounds only for primary CTAs and active states
3. **Update empty state icons**
- Consider using `kodo-steel` for decorative icons
- Keep cyan only for actionable icons
### Medium Priority
4. **Review informational elements**
- Consider using `kodo-steel` for info alerts (non-critical)
- Keep cyan for success/important info
5. **Audit text/links**
- Replace non-primary links with steel
- Keep cyan for primary navigation links
### Low Priority
6. **Maintain primary actions**
- Keep all primary button variants
- Keep active navigation states
- Keep focus rings
## Target Distribution (80/20 Rule)
**Current**: ~40% cyan usage (estimated)
**Target**: ~20% cyan usage
**Breakdown**:
- **80% Neutral**: Use `kodo-steel`, `kodo-graphite`, `kodo-ink` for backgrounds, borders, secondary elements
- **20% Color**: Use `kodo-cyan` only for:
- Primary CTAs
- Active states
- Focus rings
- Critical status indicators
- Primary navigation
## Files Requiring Changes
### High Impact (Many instances):
1. `apps/web/src/components/ui/button.tsx` - Button variants
2. `apps/web/src/components/layout/Sidebar.tsx` - Navigation
3. `apps/web/src/components/views/StudioView.tsx` - Decorative elements
4. `apps/web/src/components/ui/KodoEmptyState.tsx` - Empty states
5. `apps/web/src/components/views/FileManagerView.tsx` - Secondary actions
6. `apps/web/src/features/tracks/components/TrackFilters.tsx` - Filters
7. `apps/web/src/components/education/CourseCard.tsx` - Cards
8. `apps/web/src/components/social/PostCard.tsx` - Cards
### Medium Impact:
- All view components with decorative cyan
- Form components with secondary cyan borders
- Card components with cyan highlights
## Next Steps
1.**Action 11.3.1.1**: Audit complete
2. ⏭️ **Action 11.3.1.2**: Replace secondary cyan with steel (non-primary actions)
3. ⏭️ **Action 11.3.1.3**: Apply 80/20 rule (80% neutral, 20% color)
## Notes
- This audit is based on pattern matching and may require manual review for context-specific decisions
- Some decorative uses may be intentional for brand consistency
- Focus states and active states should remain cyan for accessibility
- Primary CTAs must remain cyan for clear visual hierarchy