import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; /// Tokens de marque ETM PowerSync. /// Source de vérité unique pour les couleurs et la typographie. class EtmTokens { EtmTokens._(); // ---- Couleurs de marque ---- static const Color navy = Color(0xFF0D2B3B); static const Color navy2 = Color(0xFF10384C); static const Color blue = Color(0xFF31A3DD); static const Color amber = Color(0xFFFEC113); static const Color green = Color(0xFF1DB86A); static const Color greenDark = Color(0xFF159C58); static const Color orange = Color(0xFFE8923A); static const Color danger = Color(0xFFE8423F); // ---- Neutres ---- static const Color ink = navy; static const Color muted = Color(0xFF6B7D88); static const Color faint = Color(0xFF9AABB4); static const Color line = Color(0xFFE6ECF0); static const Color bg = Color(0xFFF3F6F8); static const Color card = Colors.white; // ---- Soft ---- static const Color greenSoft = Color(0xFFE7F8EF); static const Color blueSoft = Color(0xFFE9F5FB); static const Color amberSoft = Color(0xFFFFF6DD); // ---- Rayons ---- static const double radius = 16; static const double radiusLg = 22; // ---- Typographie ---- static TextStyle sans({ double size = 14, FontWeight weight = FontWeight.w400, Color color = ink, double? height, double? letterSpacing, }) => GoogleFonts.ibmPlexSans( fontSize: size, fontWeight: weight, color: color, height: height, letterSpacing: letterSpacing, ); /// IBM Plex Mono pour TOUS les chiffres (alignement tabulaire). static TextStyle mono({ double size = 14, FontWeight weight = FontWeight.w600, Color color = ink, }) => GoogleFonts.ibmPlexMono( fontSize: size, fontWeight: weight, color: color, fontFeatures: const [FontFeature.tabularFigures()], ); static TextStyle sectionLabel() => sans( size: 12, weight: FontWeight.w600, color: faint, letterSpacing: 1.2, ); /// Décoration shadow standard pour les cartes. static List get cardShadow => [ BoxShadow( color: navy.withValues(alpha: 0.04), blurRadius: 2, offset: const Offset(0, 1), ), BoxShadow( color: navy.withValues(alpha: 0.06), blurRadius: 30, offset: const Offset(0, 10), ), ]; }