151 lines
4.7 KiB
Dart
151 lines
4.7 KiB
Dart
/// 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<BoxShadow> xs = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadow,
|
|
blurRadius: 4,
|
|
offset: Offset(0, 1),
|
|
),
|
|
];
|
|
|
|
/// Ombre petite - Pour cards et boutons
|
|
static final List<BoxShadow> sm = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadow,
|
|
blurRadius: 8,
|
|
offset: Offset(0, 2),
|
|
),
|
|
];
|
|
|
|
/// Ombre moyenne - Pour cards importantes
|
|
static final List<BoxShadow> md = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadow,
|
|
blurRadius: 12,
|
|
offset: Offset(0, 4),
|
|
),
|
|
];
|
|
|
|
/// Ombre large - Pour modals et dialogs
|
|
static final List<BoxShadow> lg = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadowMedium,
|
|
blurRadius: 16,
|
|
offset: Offset(0, 6),
|
|
),
|
|
];
|
|
|
|
/// Ombre très large - Pour éléments flottants
|
|
static final List<BoxShadow> xl = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadowMedium,
|
|
blurRadius: 24,
|
|
offset: Offset(0, 8),
|
|
),
|
|
];
|
|
|
|
/// Ombre extra large - Pour éléments héroïques
|
|
static final List<BoxShadow> 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<BoxShadow> 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<BoxShadow> 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<BoxShadow> 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<BoxShadow> 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<BoxShadow> 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<BoxShadow> inner = [
|
|
const BoxShadow(
|
|
color: ColorTokens.shadow,
|
|
blurRadius: 4,
|
|
offset: Offset(0, 2),
|
|
spreadRadius: -2,
|
|
),
|
|
];
|
|
|
|
/// Ombre diffuse - Pour glassmorphism
|
|
static final List<BoxShadow> diffuse = [
|
|
BoxShadow(
|
|
color: ColorTokens.shadow.withOpacity(0.05),
|
|
blurRadius: 20,
|
|
offset: const Offset(0, 4),
|
|
spreadRadius: 2,
|
|
),
|
|
];
|
|
|
|
/// Pas d'ombre
|
|
static const List<BoxShadow> none = [];
|
|
}
|
|
|