Refactoring AI candidate analysis: UI improvements, data normalization, provider management and real-time score clamping
This commit is contained in:
@@ -14,19 +14,147 @@ export default {
|
||||
|
||||
theme: {
|
||||
extend: {
|
||||
// ─── COULEURS ────────────────────────────────────────────────
|
||||
colors: {
|
||||
primary: '#1a4b8c', // Bleu Méditerranée
|
||||
accent: '#c8102e', // Rouge Occitan
|
||||
highlight: '#f5a800', // Or du Midi
|
||||
sky: '#3a7abf', // Bleu ciel
|
||||
sand: '#e8e0d0', // Sable garrigue
|
||||
anthracite: '#2d2d2d', // Anthracite
|
||||
neutral: '#f0ece4', // Fond neutre
|
||||
// Palette principale — CABM
|
||||
primary: {
|
||||
DEFAULT: '#1a4b8c', // Bleu Méditerranée
|
||||
dark: '#122f5a', // Bleu nuit
|
||||
light: '#3a7abf', // Bleu ciel (ex: sky)
|
||||
},
|
||||
accent: {
|
||||
DEFAULT: '#c8102e', // Rouge Occitan
|
||||
soft: 'rgba(200,16,46,0.10)',
|
||||
},
|
||||
highlight: {
|
||||
DEFAULT: '#f5a800', // Or du Midi
|
||||
soft: 'rgba(245,168,0,0.12)',
|
||||
dark: '#3a2800', // Texte sur fond or
|
||||
},
|
||||
// Neutres chauds
|
||||
sand: '#e8e0d0', // Sable garrigue (ex: sand)
|
||||
neutral: '#f0ece4', // Fond neutre warm
|
||||
surface: '#faf9f7', // Surface carte (ex: white)
|
||||
// Texte
|
||||
ink: {
|
||||
DEFAULT: '#2d2d2d', // Anthracite
|
||||
muted: 'rgba(45,45,45,0.50)',
|
||||
faint: 'rgba(45,45,45,0.28)',
|
||||
},
|
||||
// Dark mode
|
||||
dark: {
|
||||
bg: '#0f1923',
|
||||
surface: '#162130',
|
||||
sidebar: '#0a111a',
|
||||
border: 'rgba(255,255,255,0.06)',
|
||||
},
|
||||
// Sémantiques
|
||||
success: '#10b981',
|
||||
warning: '#f5a800',
|
||||
danger: '#c8102e',
|
||||
info: '#3a7abf',
|
||||
|
||||
// Compat rétro (garde les anciens noms fonctionnels)
|
||||
anthracite: '#2d2d2d',
|
||||
sky: '#3a7abf',
|
||||
},
|
||||
|
||||
// ─── TYPOGRAPHIE ─────────────────────────────────────────────
|
||||
fontFamily: {
|
||||
sans: ['Helvetica Neue', 'Arial', 'sans-serif'],
|
||||
serif: ['Merriweather', 'Georgia', 'serif'],
|
||||
sans: ['Nunito', 'Helvetica Neue', 'Arial', 'sans-serif'],
|
||||
serif: ['Merriweather', 'Georgia', 'serif'],
|
||||
subtitle: ['Nunito', 'Gill Sans', 'sans-serif'],
|
||||
mono: ['JetBrains Mono', 'Fira Code', 'monospace'],
|
||||
},
|
||||
fontSize: {
|
||||
'2xs': ['0.625rem', { lineHeight: '1rem', letterSpacing: '0.12em' }], // 10px — labels caps
|
||||
'xs': ['0.75rem', { lineHeight: '1.25rem' }], // 12px
|
||||
'sm': ['0.8125rem',{ lineHeight: '1.375rem' }], // 13px
|
||||
'base':['0.875rem', { lineHeight: '1.5rem' }], // 14px
|
||||
'md': ['1rem', { lineHeight: '1.625rem' }], // 16px
|
||||
'lg': ['1.0625rem',{ lineHeight: '1.75rem' }], // 17px
|
||||
'xl': ['1.125rem', { lineHeight: '1.75rem' }], // 18px
|
||||
'2xl': ['1.25rem', { lineHeight: '1.875rem' }], // 20px
|
||||
'3xl': ['1.5rem', { lineHeight: '2rem' }], // 24px
|
||||
'4xl': ['2rem', { lineHeight: '2.25rem', letterSpacing: '-0.02em'}], // 32px
|
||||
},
|
||||
|
||||
// ─── ESPACEMENT ──────────────────────────────────────────────
|
||||
// Garde l'échelle Tailwind standard + quelques tokens nommés
|
||||
spacing: {
|
||||
'sidebar': '220px',
|
||||
'sidebar-sm': '64px',
|
||||
'header': '60px',
|
||||
'navbar': '40px',
|
||||
},
|
||||
|
||||
// ─── BORDER RADIUS ───────────────────────────────────────────
|
||||
borderRadius: {
|
||||
'none': '0',
|
||||
'sm': '6px',
|
||||
'DEFAULT':'8px',
|
||||
'md': '10px',
|
||||
'lg': '12px',
|
||||
'xl': '14px',
|
||||
'2xl': '16px',
|
||||
'3xl': '20px',
|
||||
'4xl': '28px',
|
||||
'full': '9999px',
|
||||
// Tokens sémantiques
|
||||
'card': '16px',
|
||||
'btn': '10px',
|
||||
'badge': '20px',
|
||||
'input': '10px',
|
||||
},
|
||||
|
||||
// ─── OMBRES ──────────────────────────────────────────────────
|
||||
boxShadow: {
|
||||
'xs': '0 1px 3px rgba(0,0,0,0.05)',
|
||||
'sm': '0 1px 4px rgba(0,0,0,0.07)',
|
||||
'DEFAULT':'0 2px 8px rgba(0,0,0,0.09)',
|
||||
'md': '0 4px 16px rgba(0,0,0,0.10)',
|
||||
'lg': '0 8px 28px rgba(0,0,0,0.12)',
|
||||
'xl': '0 16px 48px rgba(0,0,0,0.14)',
|
||||
// Sémantiques couleurs
|
||||
'primary': '0 4px 16px rgba(26,75,140,0.20)',
|
||||
'gold': '0 4px 16px rgba(245,168,0,0.30)',
|
||||
'accent': '0 4px 16px rgba(200,16,46,0.18)',
|
||||
// Dark mode
|
||||
'dark-sm': '0 2px 12px rgba(0,0,0,0.30)',
|
||||
'dark-md': '0 4px 24px rgba(0,0,0,0.40)',
|
||||
'none': 'none',
|
||||
},
|
||||
|
||||
// ─── TRANSITIONS ─────────────────────────────────────────────
|
||||
transitionDuration: {
|
||||
'fast': '120ms',
|
||||
'DEFAULT': '180ms',
|
||||
'slow': '300ms',
|
||||
},
|
||||
transitionTimingFunction: {
|
||||
'smooth': 'cubic-bezier(0.4, 0, 0.2, 1)',
|
||||
'spring': 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
||||
},
|
||||
|
||||
// ─── ANIMATIONS ──────────────────────────────────────────────
|
||||
keyframes: {
|
||||
'fade-in': {
|
||||
from: { opacity: '0', transform: 'translateY(6px)' },
|
||||
to: { opacity: '1', transform: 'translateY(0)' },
|
||||
},
|
||||
'slide-in': {
|
||||
from: { opacity: '0', transform: 'translateX(-8px)' },
|
||||
to: { opacity: '1', transform: 'translateX(0)' },
|
||||
},
|
||||
'pulse-gold': {
|
||||
'0%, 100%': { boxShadow: '0 0 0 0 rgba(245,168,0,0.3)' },
|
||||
'50%': { boxShadow: '0 0 0 6px rgba(245,168,0,0)' },
|
||||
},
|
||||
},
|
||||
animation: {
|
||||
'fade-in': 'fade-in 0.2s ease-out',
|
||||
'slide-in': 'slide-in 0.2s ease-out',
|
||||
'pulse-gold':'pulse-gold 2s ease-in-out infinite',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user