feat(ui): identité visuelle Court Blazer sur toute l'app (ticket #17)

Ajoute le thème centralisé (presentation/theme.dart) basé sur les
polices Anton/Archivo et l'applique à tous les écrans (accueil,
bibliothèque d'exercices, programme, séance-modèle, exécution de
séance, historique). flutter analyze propre, 27/27 tests verts, build
APK debug validé.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 23:46:26 +02:00
parent 202e9d8db3
commit 2686c175f3
10 changed files with 535 additions and 81 deletions

View File

@ -181,10 +181,7 @@ final class _ProgramFormScreenState extends State<ProgramFormScreen> {
children: [
TextFormField(
controller: _nameController,
decoration: const InputDecoration(
labelText: 'Nom',
border: OutlineInputBorder(),
),
decoration: const InputDecoration(labelText: 'Nom'),
validator: (value) => value == null || value.trim().isEmpty
? 'Le nom est obligatoire.'
: null,
@ -194,7 +191,6 @@ final class _ProgramFormScreenState extends State<ProgramFormScreen> {
controller: _defaultRestController,
decoration: const InputDecoration(
labelText: 'Repos par défaut (s)',
border: OutlineInputBorder(),
),
keyboardType: TextInputType.number,
validator: _nonNegativeIntValidator,
@ -356,7 +352,6 @@ final class _ExerciseSelectionScreenState
decoration: const InputDecoration(
labelText: 'Rechercher',
prefixIcon: Icon(Icons.search),
border: OutlineInputBorder(),
),
),
const SizedBox(height: 12),
@ -467,10 +462,7 @@ final class _ProgramExerciseCard extends StatelessWidget {
const SizedBox(height: 12),
TextFormField(
initialValue: '${draft.setsCount}',
decoration: const InputDecoration(
labelText: 'Nombre de séries',
border: OutlineInputBorder(),
),
decoration: const InputDecoration(labelText: 'Nombre de séries'),
keyboardType: TextInputType.number,
onChanged: (value) {
draft.setsCount = int.tryParse(value) ?? draft.setsCount;
@ -530,7 +522,6 @@ final class _ProgramExerciseCard extends StatelessWidget {
decoration: const InputDecoration(
labelText: 'Repos après chaque série (s)',
helperText: 'Pas de repos après la toute dernière série.',
border: OutlineInputBorder(),
),
keyboardType: TextInputType.number,
onChanged: (value) {
@ -571,10 +562,7 @@ final class _NumberField extends StatelessWidget {
padding: const EdgeInsets.only(top: 8),
child: TextFormField(
initialValue: initialValue?.toString(),
decoration: InputDecoration(
labelText: label,
border: const OutlineInputBorder(),
),
decoration: InputDecoration(labelText: label),
keyboardType: TextInputType.number,
onChanged: (value) => onChanged(double.tryParse(value)),
),