- 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
6.4 KiB
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 variantapps/web/src/components/layout/Sidebar.tsx- Active nav itemsapps/web/src/components/ui/tabs.tsx- Active tabsapps/web/src/pages/DashboardPage.tsx- Primary actionsapps/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 hoverapps/web/src/components/layout/Header.tsx- Secondary nav itemsapps/web/src/components/views/FileManagerView.tsx- Secondary actionsapps/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 borderapps/web/src/components/views/StudioView.tsx- Decorative elementsapps/web/src/components/ui/progress.tsx- Progress barsapps/web/src/components/education/CourseCard.tsx- Card decorationsapps/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 variantapps/web/src/components/feedback/Alert.tsx- Info variantapps/web/src/components/ui/Spinner.tsx- Loading statesapps/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 statesapps/web/src/components/ui/select.tsx- Focus statesapps/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- Linksapps/web/src/features/auth/components/TwoFactorVerify.tsx- Linksapps/web/src/components/views/ProfileView.tsx- Text highlights
Recommendations
High Priority (Action 11.3.1.2)
-
Replace secondary action borders with
kodo-steel- Outline button hover states
- Secondary navigation borders
- Non-primary card borders
-
Reduce decorative backgrounds
- Replace
bg-kodo-cyan/10withbg-kodo-steel/10for non-primary elements - Keep cyan backgrounds only for primary CTAs and active states
- Replace
-
Update empty state icons
- Consider using
kodo-steelfor decorative icons - Keep cyan only for actionable icons
- Consider using
Medium Priority
-
Review informational elements
- Consider using
kodo-steelfor info alerts (non-critical) - Keep cyan for success/important info
- Consider using
-
Audit text/links
- Replace non-primary links with steel
- Keep cyan for primary navigation links
Low Priority
- 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-inkfor backgrounds, borders, secondary elements - 20% Color: Use
kodo-cyanonly for:- Primary CTAs
- Active states
- Focus rings
- Critical status indicators
- Primary navigation
Files Requiring Changes
High Impact (Many instances):
apps/web/src/components/ui/button.tsx- Button variantsapps/web/src/components/layout/Sidebar.tsx- Navigationapps/web/src/components/views/StudioView.tsx- Decorative elementsapps/web/src/components/ui/KodoEmptyState.tsx- Empty statesapps/web/src/components/views/FileManagerView.tsx- Secondary actionsapps/web/src/features/tracks/components/TrackFilters.tsx- Filtersapps/web/src/components/education/CourseCard.tsx- Cardsapps/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
- ✅ Action 11.3.1.1: Audit complete
- ⏭️ Action 11.3.1.2: Replace secondary cyan with steel (non-primary actions)
- ⏭️ 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