import { meetsWCAGStandard } from '../../src/lib/color-contrast'; interface ColorPair { name: string; foreground: string; background: string; textSize?: 'normal' | 'large'; } const criticalColorPairs: ColorPair[] = [ { name: 'Primary text on primary background', foreground: '#1C1C1C', background: '#FFFFFF' }, { name: 'Secondary text on primary background', foreground: '#3D3D3D', background: '#FFFFFF' }, { name: 'Tertiary text on primary background', foreground: '#4A4A4A', background: '#FFFFFF' }, { name: 'Muted text on primary background', foreground: '#6B6B6B', background: '#FFFFFF' }, { name: 'Brand primary on white', foreground: '#C41E3A', background: '#FFFFFF' }, { name: 'Brand primary on brand bg', foreground: '#C41E3A', background: '#FEF2F4' }, { name: 'Link on hover', foreground: '#C41E3A', background: '#FFFFFF' }, ]; function checkContrast() { console.log('šŸŽØ Color Contrast Check\n'); let failures = 0; let passes = 0; criticalColorPairs.forEach(pair => { const result = meetsWCAGStandard( pair.foreground, pair.background, 'AA', pair.textSize || 'normal' ); const status = result.passes ? 'āœ… PASS' : 'āŒ FAIL'; const ratio = result.ratio.toFixed(2); console.log(`${status} ${pair.name}`); console.log(` Ratio: ${ratio}:1 (Required: ${result.requiredRatio}:1)`); console.log(` FG: ${pair.foreground} | BG: ${pair.background}\n`); if (result.passes) { passes++; } else { failures++; } }); console.log(`\nšŸ“Š Summary:`); console.log(` Total: ${criticalColorPairs.length}`); console.log(` āœ… Passes: ${passes}`); console.log(` āŒ Failures: ${failures}`); if (failures > 0) { console.log('\nāš ļø Some color pairs do not meet WCAG AA standards!'); process.exit(1); } else { console.log('\nāœ… All color pairs meet WCAG AA standards!'); process.exit(0); } } checkContrast();