Files
2026-02-04 11:08:21 +01:00

192 lines
6.5 KiB
TypeScript

/**
* BeyondCX.ai Corporate Color Palette
*
* Colores corporativos de BeyondCX.ai para uso en backgrounds, cards, gradientes
* Mantiene código de colores verde/amarillo/rojo para claridad en métricas
*/
// ============================================
// COLORES CORPORATIVOS BEYONDCX.AI
// ============================================
export const brandColors = {
// Colores corporativos principales
accent1: '#E4E3E3', // Gris claro
accent2: '#B1B1B0', // Gris medio
accent3: '#6D84E3', // Azul corporativo
accent4: '#3F3F3F', // Gris oscuro
accent5: '#000000', // Negro
// Variantes del azul corporativo para gradientes
primary: '#6D84E3',
primaryLight: '#8A9EE8',
primaryDark: '#5669D0',
primaryPale: '#E8EBFA',
// Variantes de grises corporativos
grayLight: '#E4E3E3',
grayMedium: '#B1B1B0',
grayDark: '#3F3F3F',
grayDarkest: '#000000',
};
// ============================================
// CÓDIGO DE COLORES PARA MÉTRICAS (Mantener)
// ============================================
export const statusColors = {
// Verde para positivo/excelente
success: '#059669',
successLight: '#D1FAE5',
successDark: '#047857',
// Amarillo/Ámbar para warning/oportunidad
warning: '#D97706',
warningLight: '#FEF3C7',
warningDark: '#B45309',
// Rojo para crítico/negativo
critical: '#DC2626',
criticalLight: '#FEE2E2',
criticalDark: '#B91C1C',
// Azul para información
info: '#3B82F6',
infoLight: '#DBEAFE',
infoDark: '#1D4ED8',
};
// ============================================
// NEUTRALES (Usar grises corporativos)
// ============================================
export const neutralColors = {
darkest: brandColors.accent5, // #000000
dark: brandColors.accent4, // #3F3F3F
medium: brandColors.accent2, // #B1B1B0
light: brandColors.accent1, // #E4E3E3
lightest: '#F9FAFB',
white: '#FFFFFF',
};
// ============================================
// COLORES LEGACY (Para compatibilidad)
// ============================================
export const colors = {
// Primary Colors (Strategic Use) - Usar corporativo
primary: {
blue: brandColors.primary, // Azul corporativo
green: statusColors.success, // Verde para positivo
red: statusColors.critical, // Rojo para crítico
amber: statusColors.warning, // Ámbar para warning
},
// Neutral Colors (Context) - Usar grises corporativos
neutral: {
darkest: neutralColors.darkest,
dark: neutralColors.dark,
medium: neutralColors.medium,
light: neutralColors.light,
lightest: neutralColors.lightest,
white: neutralColors.white,
},
// Semantic Colors
semantic: {
success: statusColors.success,
warning: statusColors.warning,
error: statusColors.critical,
info: brandColors.primary, // Usar azul corporativo
},
// Chart Colors (Data Visualization) - Usar corporativo
chart: {
primary: brandColors.primary,
secondary: statusColors.success,
tertiary: statusColors.warning,
quaternary: '#8B5CF6',
quinary: '#EC4899',
},
// Heatmap Scale (Performance) - Mantener código de colores
heatmap: {
critical: statusColors.critical, // <70 - Critical
low: statusColors.warning, // 70-80 - Below average
medium: '#FCD34D', // 80-85 - Average
good: '#34D399', // 85-90 - Good
excellent: statusColors.success, // 90-95 - Excellent
bestInClass: statusColors.successDark, // 95+ - Best in class
},
// Priority Matrix - Usar corporativo + código de colores
matrix: {
quickWins: statusColors.success, // High impact, high feasibility
strategic: brandColors.primary, // High impact, low feasibility - Azul corporativo
consider: statusColors.warning, // Low impact, high feasibility
discard: neutralColors.medium, // Low impact, low feasibility - Gris corporativo
},
// Gradients (For hero sections, highlights) - Usar corporativo
gradients: {
primary: `from-[${brandColors.primaryDark}] via-[${brandColors.primary}] to-[${brandColors.primaryLight}]`,
success: 'from-green-500 to-emerald-600',
warning: 'from-amber-500 to-orange-600',
info: `from-[${brandColors.primary}] to-cyan-600`,
},
};
// ============================================
// GRADIENTES CORPORATIVOS
// ============================================
export const gradients = {
// Gradiente principal con azul corporativo
primary: `linear-gradient(135deg, ${brandColors.primary} 0%, ${brandColors.primaryDark} 100%)`,
// Gradiente hero con azul corporativo
hero: `linear-gradient(135deg, ${brandColors.primaryDark} 0%, ${brandColors.primary} 50%, ${brandColors.primaryLight} 100%)`,
// Gradiente sutil para backgrounds
subtle: `linear-gradient(135deg, ${brandColors.primaryPale} 0%, ${neutralColors.lightest} 100%)`,
// Gradientes de estado (mantener para claridad)
success: `linear-gradient(135deg, ${statusColors.success} 0%, ${statusColors.successDark} 100%)`,
warning: `linear-gradient(135deg, ${statusColors.warning} 0%, ${statusColors.warningDark} 100%)`,
critical: `linear-gradient(135deg, ${statusColors.critical} 0%, ${statusColors.criticalDark} 100%)`,
};
// ============================================
// HELPER FUNCTIONS
// ============================================
// Helper function to get color by value (for heatmap)
export const getHeatmapColor = (value: number): string => {
if (value >= 95) return colors.heatmap.bestInClass;
if (value >= 90) return colors.heatmap.excellent;
if (value >= 85) return colors.heatmap.good;
if (value >= 80) return colors.heatmap.medium;
if (value >= 70) return colors.heatmap.low;
return colors.heatmap.critical;
};
// Helper function to get Tailwind class by value
export const getHeatmapTailwindClass = (value: number): string => {
if (value >= 95) return 'bg-emerald-600 text-white';
if (value >= 90) return 'bg-emerald-500 text-white';
if (value >= 85) return 'bg-green-400 text-green-900';
if (value >= 80) return 'bg-yellow-300 text-yellow-900';
if (value >= 70) return 'bg-amber-400 text-amber-900';
return 'bg-red-500 text-white';
};
// Helper function for priority matrix quadrant colors
export const getMatrixQuadrantColor = (impact: number, feasibility: number): string => {
if (impact >= 5 && feasibility >= 5) return colors.matrix.quickWins;
if (impact >= 5 && feasibility < 5) return colors.matrix.strategic;
if (impact < 5 && feasibility >= 5) return colors.matrix.consider;
return colors.matrix.discard;
};
export default colors;