Guide de Design Mobile - Interface JAP
Contexte
Les Juges-Arbitres travaillent principalement depuis des appareils mobiles (smartphones et tablettes) sur le terrain. L'interface doit être optimisée pour une utilisation tactile en conditions réelles (extérieur, soleil, une main disponible).
Problèmes Identifiés
1. Navigation Latérale Fixe
- Problème : Sidebar de 256px (w-64) occupe tout l'écran mobile
- Solution : Navigation hamburger avec menu escamotable ou navigation bottom bar
2. Tailles Touch Targets
- Problème : Boutons et zones cliquables trop petits (< 44px)
- Solution : Minimum 44px de hauteur pour toute zone tactile
3. Formulaires de Saisie
- Problème : Inputs de score trop petits et proches
- Solution : Inputs plus grands avec espacement suffisant
4. Textes Illisibles
- Problème : text-xs et text-sm difficiles à lire en extérieur
- Solution : text-base minimum, contraste élevé
5. Tableaux Non Responsifs
- Problème : Tableaux horizontaux débordent
- Solution : Cards empilées sur mobile
Solutions Détaillées
1. Navigation Mobile First
Option A : Bottom Navigation (Recommandé)
Option B : Hamburger Menu
    html
    
  
  
  
  
  
  
    
  
2. Touch Targets Optimisés
    scss
    
  
  // Tous les boutons et liens doivent avoir minimum 44px de hauteur
.btn-touch {
  @apply min-h-[44px] px-6 py-3;
}
// Espacement entre éléments tactiles
.touch-list > * + * {
  @apply mt-2; // Minimum 8px entre éléments
}
3. Formulaires de Score Mobile
    html
    
  
  
 
  
    Équipe 1
    
  
  
    Équipe 2
    
  
4. Cards au lieu de Tableaux
    html
    
  
  
  
    
      Match #123
      En cours
    
    
    
      
        Équipe 1
        6-4
      
      
        Équipe 2
        4-6
      
    
    
    
      
      
    
  
  
    
  
5. Statistiques Responsives
    html
    
  
  
  
    12
    Validés
  
  
    3
    Contestés
  
Breakpoints Tailwind
    scss
    
  
  // Configuration responsive
// Mobile First : default (< 640px)
// sm: 640px  - Grandes phones
// md: 768px  - Tablettes portrait
// lg: 1024px - Tablettes paysage
// xl: 1280px - Desktop
Spécifications Touch
Zones Tactiles
- Minimum : 44x44px (Apple HIG)
- Recommandé : 48x48px
- Espacement : 8px minimum entre targets
Inputs Numériques
    html
    
  
  
Swipe et Gestes
- Swipe horizontal pour navigation entre tournois
- Pull-to-refresh pour actualiser scores
- Long press pour actions contextuelles
Optimisations Performance
1. Lazy Loading
    html
    
  
  
 
2. Turbo Mobile
    javascript
    
  
  // Désactiver animations complexes sur mobile
if (window.matchMedia('(max-width: 768px)').matches) {
  Turbo.config.drive.progressBarDelay = 0;
}
3. Cache Offline
- Service Worker pour mode hors-ligne
- LocalStorage pour scores en cours
Checklist Implementation
Phase 1 : Navigation
- ☐ Implémenter bottom navigation mobile
- ☐ Adapter header avec menu hamburger
- ☐ Gérer transitions entre vues
Phase 2 : Touch Targets
- ☐ Augmenter taille tous boutons (min 44px)
- ☐ Espacer éléments tactiles
- ☐ Ajouter feedback visuel au toucher
Phase 3 : Formulaires
- ☐ Redesigner saisie scores
- ☐ Optimiser claviers numériques
- ☐ Ajouter validation temps réel
Phase 4 : Tableaux
- ☐ Convertir tables en cards mobile
- ☐ Implémenter vue liste/grille
- ☐ Optimiser scrolling horizontal
Phase 5 : Tests
- ☐ Tester sur iPhone SE (plus petit)
- ☐ Tester sur iPad
- ☐ Tester en conditions extérieures
- ☐ Tester avec gants (hiver)
Composants Stimulus
Score Input Mobile
    javascript
    
  
  // controllers/mobile_score_controller.js
export default class extends Controller {
  static targets = ["input", "increment", "decrement"]
  increment() {
    this.inputTarget.value = parseInt(this.inputTarget.value || 0) + 1
    this.inputTarget.dispatchEvent(new Event('input'))
  }
  decrement() {
    const current = parseInt(this.inputTarget.value || 0)
    if (current > 0) {
      this.inputTarget.value = current - 1
      this.inputTarget.dispatchEvent(new Event('input'))
    }
  }
}
Accessibilité Mobile
Contraste
- Ratio minimum 4.5:1 pour texte normal
- Ratio 7:1 pour conditions extérieures
Tailles Police
- Corps : 16px minimum (text-base)
- Titres : 20px minimum (text-xl)
- Boutons : 16px minimum
ARIA Labels
    html
    
  
  
Testing Mobile
Outils
- Chrome DevTools Device Mode
- Safari Responsive Design Mode
- BrowserStack pour tests réels
Scénarios Prioritaires
- Validation score en cours de match
- Consultation tableau en temps réel
- Gestion contestations urgentes
- Navigation entre tournois multiples
Notes Importantes
- Priorité au mode Portrait : La plupart des JAP utilisent leur téléphone en portrait
- Mode Une Main : Zones d'action principales accessibles avec le pouce
- Offline First : Fonctionnement minimal sans connexion
- Batterie : Éviter animations/polling excessifs
- Luminosité : Fort contraste pour lisibilité en plein soleil
Date création : 14/10/2025
Version : 1.0
Auteur : Architecture MiPadel
          
            
            Volver a la documentación
          
      
            ¿Tienes una pregunta? Contacta con soporte
          
        