163 lines
3.8 KiB
Dart
163 lines
3.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
|
|
/// UnionFlow Mobile App - Typographie Globale
|
|
/// Roboto (Google Fonts) — cohérence cross-platform
|
|
class AppTypography {
|
|
static const String _fontFamily = 'Roboto';
|
|
|
|
// --- Display / Titres principaux (Roboto via GoogleFonts) ---
|
|
|
|
static TextStyle get displayLarge => GoogleFonts.roboto(
|
|
fontSize: 32.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: -0.5,
|
|
height: 1.2,
|
|
);
|
|
|
|
static TextStyle get displayMedium => GoogleFonts.roboto(
|
|
fontSize: 28.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: -0.25,
|
|
height: 1.25,
|
|
);
|
|
|
|
static TextStyle get displaySmall => GoogleFonts.roboto(
|
|
fontSize: 24.0,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: 0,
|
|
height: 1.3,
|
|
);
|
|
|
|
// --- Titres de sections (Inter SemiBold) ---
|
|
|
|
static const TextStyle headerLarge = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 22.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: -0.2,
|
|
height: 1.27,
|
|
);
|
|
|
|
/// Alias historique — conservé pour compatibilité
|
|
static const TextStyle headerSmall = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 18.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: -0.2,
|
|
height: 1.3,
|
|
);
|
|
|
|
static const TextStyle titleMedium = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 16.0,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: 0.1,
|
|
height: 1.5,
|
|
);
|
|
|
|
static const TextStyle titleSmall = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 14.0,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: 0.1,
|
|
height: 1.43,
|
|
);
|
|
|
|
// --- Corps de texte ---
|
|
|
|
static const TextStyle bodyLarge = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 16.0,
|
|
fontWeight: FontWeight.w400,
|
|
letterSpacing: 0.3,
|
|
height: 1.5,
|
|
);
|
|
|
|
static const TextStyle bodyMedium = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 14.0,
|
|
fontWeight: FontWeight.w400,
|
|
letterSpacing: 0.25,
|
|
height: 1.43,
|
|
);
|
|
|
|
/// Alias historique — conservé pour compatibilité
|
|
static const TextStyle bodyTextSmall = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 13.0,
|
|
fontWeight: FontWeight.w400,
|
|
letterSpacing: 0.2,
|
|
height: 1.4,
|
|
);
|
|
|
|
// --- Actions et boutons ---
|
|
|
|
static const TextStyle actionText = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 15.0,
|
|
fontWeight: FontWeight.w600,
|
|
letterSpacing: 0.1,
|
|
);
|
|
|
|
static const TextStyle buttonLabel = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 16.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: 0.1,
|
|
);
|
|
|
|
// --- Sous-titres et labels ---
|
|
|
|
/// Alias historique — conservé pour compatibilité
|
|
static const TextStyle subtitleSmall = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 12.0,
|
|
fontWeight: FontWeight.w400,
|
|
letterSpacing: 0.2,
|
|
height: 1.4,
|
|
);
|
|
|
|
static const TextStyle labelMedium = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 12.0,
|
|
fontWeight: FontWeight.w500,
|
|
letterSpacing: 0.4,
|
|
height: 1.33,
|
|
);
|
|
|
|
// --- Badges, métriques denses ---
|
|
|
|
/// Alias historique — conservé pour compatibilité
|
|
static const TextStyle badgeText = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 11.0,
|
|
fontWeight: FontWeight.w500,
|
|
letterSpacing: 0.3,
|
|
);
|
|
|
|
static const TextStyle caption = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 11.0,
|
|
fontWeight: FontWeight.w400,
|
|
letterSpacing: 0.4,
|
|
height: 1.45,
|
|
);
|
|
|
|
// --- Navigation ---
|
|
|
|
static const TextStyle navLabel = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 11.0,
|
|
fontWeight: FontWeight.w500,
|
|
letterSpacing: 0.3,
|
|
);
|
|
|
|
static const TextStyle navLabelSelected = TextStyle(
|
|
fontFamily: _fontFamily,
|
|
fontSize: 11.0,
|
|
fontWeight: FontWeight.w700,
|
|
letterSpacing: 0.3,
|
|
);
|
|
}
|