# Consignes mobile — mon design system > **Tu es un agent IA qui produit du code mobile avec ce design system.** > Lis ce fichier ENTIER avant d'écrire la moindre ligne. Suis les règles à la lettre. --- ## 🎯 Identité - **Cibles** : iOS et Android via HTML/JS (Cordova, Capacitor, ou PWA) - **Largeur ref** : 390px (iPhone 14 / Galaxy S22) - **Hit target min** : 44 × 44px (Apple HIG / Material) - **Style** : Gruvbox seventies — orange brûlé, fond brun délavé en sombre / gris clair usé en clair --- ## 📁 Fichiers | Fichier | Composants exposés sur window | |-------------------------------|----------------------------------------------------------------------------| | `components/ui-kit.jsx` | Icon, Tooltip, Button, IconButton, Toggle, StatusLed, Popup, BatteryGauge, RadialGauge, BigRadialGauge, TreeNav, Sparkline, LineChart | | `components/mobile-kit.jsx` | StatusBar, NavBar, TabBar, ListRow, ListSection, ActionCard, PrimaryButton, SegmentedControl, SearchBar | | `components/mobile-sheets.jsx`| BottomSheet, ActionSheet, AlertDialog, Toast, FAB, PullToRefresh | | `components/mobile-gestures.jsx`| useGesture, GestureZone, GESTURE_CATALOG | | `components/mobile-swipeable.jsx`| SwipeableRow | | `components/mobile-forms.jsx` | FormField, TextInput, DateInput, Dropdown, CheckboxItem, RadioGroup, MediaInsert, AvatarLogo, BiometricButton | | `components/mobile-apps.jsx` | Avatar, AvatarMenu, OnboardingSlider, ChatBubble, ChatComposer, CalendarMonth, MapView, FilterChips, QrScannerView, CameraView, FileExplorer | --- ## ⚠️ Règles absolues 1. **Hit targets ≥ 44 × 44 px** sur TOUT élément tactile. Pas de petits boutons. 2. **Pas de hover** — c'est du tactile. Utilise la pression au touch via `.touch-press`. 3. **Tooltips** sur tous les `` isolés (la prop `label` les active automatiquement). 4. **Toujours des polices natives mobile** : Inter / JetBrains Mono / Share Tech Mono via tokens. 5. **Animations fluides** : 180-300ms, easing `cubic-bezier(.3,.7,.3,1.2)` pour entrée, `cubic-bezier(.3,.6,.3,1)` pour mouvement. 6. **Toujours `` en bas** comme navigation primaire (3-5 sections). 7. **JAMAIS de popup centrée modale standard** — utilise `BottomSheet`, `ActionSheet`, `AlertDialog` ou `Toast`. 8. **Bouton Avatar en haut à droite** de chaque écran principal pour accès rapide au menu utilisateur. 9. **Variables CSS uniquement** — pas de hex en dur (`color: var(--accent)`, jamais `color: #fe8019`). 10. **Smartphone d'abord** — toute interaction doit fonctionner avec un seul pouce. --- ## 🧩 Cas → Composant à utiliser ### Structure d'écran (toujours) ```jsx
} />
{/* contenu */}
``` Si la page fait partie d'une nav principale, ajoute `` après. Si elle a une action principale flottante, ajoute ``. ### Liste à actions cachées ```jsx open(item)} leftActions={[{ label: 'Suppr.', icon: 'close', color: 'var(--err)', onClick: del }]} // ← swipe gauche rightActions={[{ label: 'Lu', icon: 'play', color: 'var(--info)', onClick: read }]} // ← swipe droit >
{contenu de la ligne}
``` ### Champ texte typé ```jsx // Email // Mot de passe // OTP SMS // Recherche ``` ### Confirmation destructive ```jsx ``` ### Choix dans une liste ```jsx ``` ### Menu d'actions sur élément ```jsx ``` ### Feedback après action ```jsx setMsg(null)} message={msg} variant="ok" /> ``` ### Menu utilisateur (avatar haut-droite) ```jsx ``` --- ## 🚫 Anti-patterns - ❌ `window.alert / confirm` → utilise `AlertDialog` - ❌ `