271 lines
5.8 KiB
Markdown
271 lines
5.8 KiB
Markdown
# Guide de Responsive Mobile - Homelab Automation Dashboard
|
|
|
|
## Résumé des Modifications
|
|
|
|
Ce document détaille les modifications apportées pour rendre l'application Homelab Automation Dashboard entièrement responsive et optimisée pour les appareils mobiles.
|
|
|
|
---
|
|
|
|
## 1. Navigation Mobile
|
|
|
|
### Menu Hamburger
|
|
- **Breakpoint**: `md:` (768px)
|
|
- **Composants ajoutés**:
|
|
- `#mobile-nav-overlay` - Overlay semi-transparent avec blur
|
|
- `#mobile-nav-sidebar` - Sidebar glissante depuis la gauche
|
|
- `#mobile-menu-btn` - Bouton hamburger animé
|
|
|
|
### Fonctionnalités
|
|
- Animation du bouton hamburger (transformation en X)
|
|
- Fermeture par swipe vers la gauche
|
|
- Fermeture par touche Escape
|
|
- Fermeture automatique au redimensionnement vers desktop
|
|
- Liens de navigation avec icônes
|
|
- Toggle de thème intégré
|
|
|
|
### Classes CSS
|
|
```css
|
|
.mobile-menu-btn
|
|
.mobile-nav-overlay
|
|
.mobile-nav-sidebar
|
|
.mobile-nav-links
|
|
.desktop-nav-links
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Breakpoints Utilisés
|
|
|
|
| Breakpoint | Taille | Usage |
|
|
|------------|--------|-------|
|
|
| Base | < 640px | Mobile (téléphones) |
|
|
| `sm:` | ≥ 640px | Petits écrans (grands téléphones) |
|
|
| `md:` | ≥ 768px | Tablettes |
|
|
| `lg:` | ≥ 1024px | Desktop |
|
|
| `xl:` | ≥ 1280px | Grands écrans |
|
|
|
|
---
|
|
|
|
## 3. Touch Targets
|
|
|
|
Tous les éléments interactifs respectent la taille minimale de **44x44px** :
|
|
|
|
```css
|
|
.touch-target {
|
|
min-width: 44px;
|
|
min-height: 44px;
|
|
}
|
|
```
|
|
|
|
### Éléments concernés
|
|
- Boutons de navigation
|
|
- Filtres de tâches/schedules
|
|
- Boutons d'action (kebab menu)
|
|
- Éléments de dropdown
|
|
- Boutons de formulaire
|
|
|
|
---
|
|
|
|
## 4. Adaptations par Section
|
|
|
|
### Dashboard
|
|
- **Hero**: Titre réduit de `text-5xl` à `text-3xl` sur mobile
|
|
- **Métriques**: Grille 2x2 au lieu de 4 colonnes
|
|
- **Actions Rapides**: Grille 2x2 avec labels courts
|
|
- **Boutons**: Empilés verticalement sur mobile
|
|
|
|
### Hosts
|
|
- **Header**: Layout en colonne sur mobile
|
|
- **Boutons**: Labels condensés ("Ajouter" au lieu de "Ajouter Host")
|
|
- **Dropdown groupes**: Padding augmenté pour touch
|
|
|
|
### Playbooks
|
|
- **Recherche**: Pleine largeur sur mobile
|
|
- **Filtres catégories**: Scroll horizontal avec masquage scrollbar
|
|
- **Bouton nouveau**: Texte condensé sur mobile
|
|
|
|
### Tasks
|
|
- **Filtres status**: Scroll horizontal
|
|
- **Calendrier date**: Adapté à la largeur de l'écran
|
|
- **Cartes tâches**: Layout empilé
|
|
|
|
### Schedules
|
|
- **Stats**: Grille 2x2 sur mobile
|
|
- **Filtres**: Empilés avec recherche pleine largeur
|
|
- **Calendrier**: Cellules réduites
|
|
|
|
### Logs
|
|
- **Boutons**: Icônes seules sur mobile
|
|
- **Container**: Hauteur max réduite (400px vs 600px)
|
|
|
|
### Aide
|
|
- **Table des matières**: Masquée sur mobile/tablette
|
|
- **Contenu**: Pleine largeur
|
|
|
|
---
|
|
|
|
## 5. Modales Mobile
|
|
|
|
### Comportement
|
|
- Plein écran sur mobile (`< 640px`)
|
|
- Scroll interne avec prevention du scroll body
|
|
- Bouton de fermeture fixe en haut à droite
|
|
|
|
```css
|
|
@media (max-width: 640px) {
|
|
#modal .glass-card {
|
|
min-height: 100vh;
|
|
max-height: 100vh;
|
|
width: 100%;
|
|
border-radius: 0;
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Animations Optimisées
|
|
|
|
### Désactivation sur Mobile
|
|
- Animation `float` désactivée
|
|
- Hover transforms supprimés
|
|
- Transitions réduites à `opacity` seulement
|
|
|
|
### Respect de `prefers-reduced-motion`
|
|
```css
|
|
@media (prefers-reduced-motion: reduce) {
|
|
* {
|
|
animation-duration: 0.01ms !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Interactions Tactiles
|
|
|
|
### Swipe Gestures
|
|
- **Swipe droite** (bord gauche): Ouvre la navigation
|
|
- **Swipe gauche** (nav ouverte): Ferme la navigation
|
|
- Seuil: 80px minimum
|
|
|
|
### Kebab Menu
|
|
- Visible uniquement sur mobile (`< 640px`)
|
|
- Remplace les boutons d'action inline
|
|
- Fermeture au clic extérieur
|
|
|
|
```javascript
|
|
function toggleKebabMenu(element, event) {
|
|
// Toggle menu dropdown
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Utilitaires CSS Ajoutés
|
|
|
|
```css
|
|
/* Masquer scrollbar */
|
|
.scrollbar-hide {
|
|
-ms-overflow-style: none;
|
|
scrollbar-width: none;
|
|
}
|
|
|
|
/* Safe area pour iPhone X+ */
|
|
.safe-area-bottom {
|
|
padding-bottom: max(16px, env(safe-area-inset-bottom));
|
|
}
|
|
|
|
/* Touch target minimum */
|
|
.touch-target {
|
|
min-width: 44px;
|
|
min-height: 44px;
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 9. Support Orientation Paysage
|
|
|
|
```css
|
|
@media (max-height: 500px) and (orientation: landscape) {
|
|
.hero-section {
|
|
padding-top: 60px;
|
|
padding-bottom: 20px;
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 10. Thème Clair Mobile
|
|
|
|
Tous les composants mobiles supportent le thème clair :
|
|
- Navigation sidebar
|
|
- Action bar
|
|
- Kebab menus
|
|
- Dropdowns
|
|
|
|
---
|
|
|
|
## Guide d'Implémentation Future
|
|
|
|
### Pour ajouter un nouveau composant responsive :
|
|
|
|
1. **Commencer par le mobile** (mobile-first)
|
|
2. **Utiliser les classes Tailwind** `sm:`, `md:`, `lg:`
|
|
3. **Respecter les touch targets** (min 44x44px)
|
|
4. **Tester sur plusieurs appareils** :
|
|
- iPhone SE (375px)
|
|
- iPhone 14 Pro (393px)
|
|
- iPad (768px)
|
|
- Desktop (1024px+)
|
|
|
|
### Pattern de bouton responsive :
|
|
```html
|
|
<button class="btn-primary flex-1 sm:flex-none text-sm touch-target">
|
|
<i class="fas fa-icon mr-1 sm:mr-2"></i>
|
|
<span class="hidden sm:inline">Texte complet</span>
|
|
<span class="sm:hidden">Court</span>
|
|
</button>
|
|
```
|
|
|
|
### Pattern de grille responsive :
|
|
```html
|
|
<div class="grid grid-cols-2 md:grid-cols-4 gap-2 sm:gap-4">
|
|
<!-- Items -->
|
|
</div>
|
|
```
|
|
|
|
### Pattern de layout empilé :
|
|
```html
|
|
<div class="flex flex-col sm:flex-row gap-3 sm:gap-4">
|
|
<!-- Items -->
|
|
</div>
|
|
```
|
|
|
|
---
|
|
|
|
## Tests Recommandés
|
|
|
|
1. **Chrome DevTools** - Device Mode
|
|
2. **Safari** - Responsive Design Mode
|
|
3. **BrowserStack** - Appareils réels
|
|
4. **Lighthouse** - Performance mobile
|
|
|
|
### Checklist de validation :
|
|
- [ ] Navigation mobile fonctionne
|
|
- [ ] Touch targets ≥ 44px
|
|
- [ ] Pas de scroll horizontal non voulu
|
|
- [ ] Textes lisibles (min 14px)
|
|
- [ ] Boutons accessibles
|
|
- [ ] Modales plein écran
|
|
- [ ] Thème clair/sombre fonctionne
|
|
- [ ] Animations fluides
|
|
- [ ] Safe area respectée (notch)
|
|
|
|
---
|
|
|
|
*Dernière mise à jour: Décembre 2025*
|