/// Tokens d'ombres pour le design system /// Définit les ombres standardisées de l'application library shadow_tokens; import 'package:flutter/material.dart'; import 'color_tokens.dart'; /// Tokens d'ombres standardisés /// /// Utilisation cohérente des ombres dans toute l'application. /// Basé sur les principes de Material Design 3. class ShadowTokens { ShadowTokens._(); // ═══════════════════════════════════════════════════════════════════════════ // OMBRES STANDARDS // ═══════════════════════════════════════════════════════════════════════════ /// Ombre minimale - Pour éléments subtils static final List xs = [ const BoxShadow( color: ColorTokens.shadow, blurRadius: 4, offset: Offset(0, 1), ), ]; /// Ombre petite - Pour cards et boutons static final List sm = [ const BoxShadow( color: ColorTokens.shadow, blurRadius: 8, offset: Offset(0, 2), ), ]; /// Ombre moyenne - Pour cards importantes static final List md = [ const BoxShadow( color: ColorTokens.shadow, blurRadius: 12, offset: Offset(0, 4), ), ]; /// Ombre large - Pour modals et dialogs static final List lg = [ const BoxShadow( color: ColorTokens.shadowMedium, blurRadius: 16, offset: Offset(0, 6), ), ]; /// Ombre très large - Pour éléments flottants static final List xl = [ const BoxShadow( color: ColorTokens.shadowMedium, blurRadius: 24, offset: Offset(0, 8), ), ]; /// Ombre extra large - Pour éléments héroïques static final List xxl = [ const BoxShadow( color: ColorTokens.shadowHigh, blurRadius: 32, offset: Offset(0, 12), spreadRadius: -4, ), ]; // ═══════════════════════════════════════════════════════════════════════════ // OMBRES COLORÉES // ═══════════════════════════════════════════════════════════════════════════ /// Ombre primaire - Pour éléments avec couleur primaire static final List primary = [ BoxShadow( color: ColorTokens.primary.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ]; /// Ombre secondaire - Pour éléments avec couleur secondaire static final List secondary = [ BoxShadow( color: ColorTokens.secondary.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ]; /// Ombre success - Pour éléments de succès static final List success = [ BoxShadow( color: ColorTokens.success.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ]; /// Ombre error - Pour éléments d'erreur static final List error = [ BoxShadow( color: ColorTokens.error.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ]; /// Ombre warning - Pour éléments d'avertissement static final List warning = [ BoxShadow( color: ColorTokens.warning.withOpacity(0.15), blurRadius: 16, offset: const Offset(0, 4), ), ]; // ═══════════════════════════════════════════════════════════════════════════ // OMBRES SPÉCIALES // ═══════════════════════════════════════════════════════════════════════════ /// Ombre interne - Pour effets enfoncés static final List inner = [ const BoxShadow( color: ColorTokens.shadow, blurRadius: 4, offset: Offset(0, 2), spreadRadius: -2, ), ]; /// Ombre diffuse - Pour glassmorphism static final List diffuse = [ BoxShadow( color: ColorTokens.shadow.withOpacity(0.05), blurRadius: 20, offset: const Offset(0, 4), spreadRadius: 2, ), ]; /// Pas d'ombre static const List none = []; }