-```
-
-## Migration des composants existants
-
-### Avant (avec classes Tailwind)
-```tsx
-
- ✅ Succès
-
-```
-
-### Après (avec design tokens)
-```tsx
-
- Succès
-
-```
-
-## Extensibilité
-
-Le système est conçu pour supporter facilement :
-- **Nouveaux thèmes** : Ajouter dans `themeTokens`
-- **Nouveaux patterns** : Étendre `COLOR_PATTERNS`
-- **Nouvelles opacités** : Ajouter dans `OPACITY`
-- **Composants personnalisés** : Utiliser `useDesignTokens`
-
-## Exemples d'usage
-
-### Composant personnalisé
-```tsx
-import { useDesignTokens } from '@/hooks/useDesignTokens';
-
-function CustomComponent() {
- const { colors, withOpacity } = useDesignTokens();
-
- return (
-
- Contenu personnalisé
-
- );
-}
-```
-
-### Style conditionnel
-```tsx
-function ConditionalComponent({ isActive }: { isActive: boolean }) {
- const { colors } = useDesignTokens();
-
- return (
-
- {isActive ? 'Actif' : 'Inactif'}
-
- );
-}
-```
-
-Ce système garantit la cohérence visuelle et facilite la maintenance des styles dans toute l'application.
diff --git a/src/lib/design-tokens.ts b/src/lib/design-tokens.ts
deleted file mode 100644
index f3f81d7..0000000
--- a/src/lib/design-tokens.ts
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * Design Tokens - Système de couleurs cohérent pour TowerControl
- *
- * Ce fichier définit tous les tokens de design utilisés dans l'application.
- * Il sert de source unique de vérité pour les couleurs et facilite la maintenance.
- */
-
-export type ColorToken = string;
-
-export interface ColorPalette {
- // Couleurs principales
- background: ColorToken;
- foreground: ColorToken;
-
- // Surfaces
- card: ColorToken;
- cardHover: ColorToken;
- cardColumn: ColorToken;
-
- // Bordures et inputs
- border: ColorToken;
- input: ColorToken;
-
- // Couleurs sémantiques
- primary: ColorToken;
- primaryForeground: ColorToken;
- muted: ColorToken;
- mutedForeground: ColorToken;
-
- // Couleurs d'état
- destructive: ColorToken;
- success: ColorToken;
- accent: ColorToken;
-
- // Couleurs étendues
- purple: ColorToken;
- yellow: ColorToken;
- green: ColorToken;
- blue: ColorToken;
- gray: ColorToken;
- grayLight: ColorToken;
-}
-
-export interface ThemeTokens {
- light: ColorPalette;
- dark: ColorPalette;
-}
-
-/**
- * Tokens de couleurs pour le thème clair
- */
-export const lightTheme: ColorPalette = {
- // Couleurs principales
- background: '#f1f5f9', // slate-100
- foreground: '#0f172a', // slate-900
-
- // Surfaces
- card: '#ffffff', // white
- cardHover: '#f8fafc', // slate-50
- cardColumn: '#f8fafc', // slate-50
-
- // Bordures et inputs
- border: '#cbd5e1', // slate-300
- input: '#ffffff', // white
-
- // Couleurs sémantiques
- primary: '#0891b2', // cyan-600
- primaryForeground: '#ffffff', // white
- muted: '#94a3b8', // slate-400
- mutedForeground: '#64748b', // slate-500
-
- // Couleurs d'état
- destructive: '#dc2626', // red-600
- success: '#059669', // emerald-600
- accent: '#d97706', // amber-600
-
- // Couleurs étendues
- purple: '#8b5cf6', // purple-500
- yellow: '#eab308', // yellow-500
- green: '#059669', // emerald-600
- blue: '#2563eb', // blue-600
- gray: '#6b7280', // gray-500
- grayLight: '#e5e7eb', // gray-200
-};
-
-/**
- * Tokens de couleurs pour le thème sombre
- */
-export const darkTheme: ColorPalette = {
- // Couleurs principales
- background: '#1e293b', // slate-800
- foreground: '#f1f5f9', // slate-100
-
- // Surfaces
- card: '#334155', // slate-700
- cardHover: '#475569', // slate-600
- cardColumn: '#0f172a', // slate-900
-
- // Bordures et inputs
- border: '#64748b', // slate-500
- input: '#334155', // slate-700
-
- // Couleurs sémantiques
- primary: '#06b6d4', // cyan-500
- primaryForeground: '#f1f5f9', // slate-100
- muted: '#64748b', // slate-500
- mutedForeground: '#94a3b8', // slate-400
-
- // Couleurs d'état
- destructive: '#ef4444', // red-500
- success: '#10b981', // emerald-500
- accent: '#f59e0b', // amber-500
-
- // Couleurs étendues
- purple: '#8b5cf6', // purple-500
- yellow: '#eab308', // yellow-500
- green: '#10b981', // emerald-500
- blue: '#3b82f6', // blue-500
- gray: '#9ca3af', // gray-400
- grayLight: '#374151', // gray-700
-};
-
-/**
- * Collection complète des tokens de thème
- */
-export const themeTokens: ThemeTokens = {
- light: lightTheme,
- dark: darkTheme,
-};
-
-/**
- * Utilitaires pour les tokens de couleur
- */
-export class DesignTokenUtils {
- /**
- * Génère une couleur avec transparence
- */
- static withOpacity(color: ColorToken, opacity: number): string {
- return `color-mix(in srgb, ${color} ${opacity * 100}%, transparent)`;
- }
-
- /**
- * Génère une couleur de bordure avec transparence
- */
- static borderWithOpacity(color: ColorToken, opacity: number, baseBorder: ColorToken): string {
- return `color-mix(in srgb, ${color} ${opacity * 100}%, ${baseBorder})`;
- }
-
- /**
- * Génère un background avec transparence
- */
- static backgroundWithOpacity(color: ColorToken, opacity: number): string {
- return `color-mix(in srgb, ${color} ${opacity * 100}%, transparent)`;
- }
-
- /**
- * Obtient les tokens pour un thème donné
- */
- static getTokens(theme: 'light' | 'dark'): ColorPalette {
- return themeTokens[theme];
- }
-
- /**
- * Génère les CSS Variables pour un thème
- */
- static generateCSSVariables(theme: 'light' | 'dark'): Record
{
- const tokens = this.getTokens(theme);
- return {
- '--background': tokens.background,
- '--foreground': tokens.foreground,
- '--card': tokens.card,
- '--card-hover': tokens.cardHover,
- '--card-column': tokens.cardColumn,
- '--border': tokens.border,
- '--input': tokens.input,
- '--primary': tokens.primary,
- '--primary-foreground': tokens.primaryForeground,
- '--muted': tokens.muted,
- '--muted-foreground': tokens.mutedForeground,
- '--destructive': tokens.destructive,
- '--success': tokens.success,
- '--accent': tokens.accent,
- '--purple': tokens.purple,
- '--yellow': tokens.yellow,
- '--green': tokens.green,
- '--blue': tokens.blue,
- '--gray': tokens.gray,
- '--gray-light': tokens.grayLight,
- };
- }
-}
-
-/**
- * Constantes pour les opacités courantes
- */
-export const OPACITY = {
- subtle: 0.05, // 5% - très subtil
- light: 0.1, // 10% - léger
- medium: 0.2, // 20% - moyen
- strong: 0.3, // 30% - fort
- solid: 0.8, // 80% - presque opaque
-} as const;
-
-/**
- * Patterns de couleurs prédéfinis pour les composants
- */
-export const COLOR_PATTERNS = {
- // Messages d'état
- success: {
- text: 'var(--success)',
- background: DesignTokenUtils.withOpacity('var(--success)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--success)', OPACITY.medium, 'var(--border)'),
- },
- error: {
- text: 'var(--destructive)',
- background: DesignTokenUtils.withOpacity('var(--destructive)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--destructive)', OPACITY.medium, 'var(--border)'),
- },
- warning: {
- text: 'var(--accent)',
- background: DesignTokenUtils.withOpacity('var(--accent)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--accent)', OPACITY.medium, 'var(--border)'),
- },
-
- // Cards colorées
- primary: {
- text: 'var(--primary)',
- background: DesignTokenUtils.withOpacity('var(--primary)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--primary)', OPACITY.medium, 'var(--border)'),
- },
- purple: {
- text: 'var(--purple)',
- background: DesignTokenUtils.withOpacity('var(--purple)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--purple)', OPACITY.medium, 'var(--border)'),
- },
- yellow: {
- text: 'var(--yellow)',
- background: DesignTokenUtils.withOpacity('var(--yellow)', OPACITY.light),
- border: DesignTokenUtils.borderWithOpacity('var(--yellow)', OPACITY.medium, 'var(--border)'),
- },
-} as const;