feat(layout): socle UI mobile - nav, feuille et dialogs plein écran #92
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/mobile-ui-shell"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #91 — fondation du chantier "UI mobile & tablette".
Ce que ça change
Jusqu'ici, toute adaptation mobile de ce repo était du CSS pur sur le
même DOM (aucun composant ne branchait son JSX selon la largeur ou la
plateforme — vérifié en amont, zéro précédent). Ce ticket introduit le
premier vrai branchement, plus les primitifs que les 8 tickets suivants du
chantier vont réutiliser.
useIsMobileViewport()(apps/web/src/lib/) — point de véritéunique, basé sur
matchMedia, live (réagit à un resize/une rotation)._breakpoints.scss—$phone/$tabletSass + mixinsphone/phone-up/tablet-down, remplaçant les nombres magiques640/1024 répétés en dur dans 6 fichiers. Les deux occurrences de 860px
(landing hero, page admin des tutoriels) sont délibérément laissées
telles quelles — un collapse de grille 2 colonnes sans rapport avec le
breakpoint tablette du catalogue recettes ; les unifier aurait changé un
comportement visuel réel sans raison.
useNativeDialogBehavior— mécanique (showModal/eventclose/clic extérieur) extraite deDialog.tsx, partagée avec lenouveau
BottomSheet.tsx(feuille mobile pleine largeur, mêmefondation
<dialog>natif queDialog, juste ancrée en bas).AppLayout— sur téléphone, la sidebar n'est plus reflow-ée en CSSen barre horizontale (l'ancien traitement) : elle est remplacée par une
vraie barre d'onglets basse (Planning/Recettes/Liste de courses + Plus).
Le "Plus" ouvre une
BottomSheetcombinant Paramètres et Compte (deuxdropdowns flottants séparés côté desktop → un seul point d'entrée
mobile, IA plus simple, un seul emplacement d'onglet sur une barre déjà
serrée).
dialog.scss— vrai plein écran (bord à bord, sans arrondi) sous lebreakpoint phone, au lieu d'une marge simplement réduite comme avant.
Vérification
pnpm --filter web exec tsc -b --force+biome check— propres.pnpm --filter web build— build de prod propre (Sass compile, tous les@userésolvent).layout.cy.tsa été réécrit sur le point précis que ce PR change (letest de l'ancienne "barre horizontale sous 640px" n'a plus de sens, ce
traitement n'existe plus) — nouvelle couverture : la sidebar n'existe
plus du tout dans le DOM sur téléphone, la barre basse a ses 4 items
avec labels lisibles, le "Plus" ouvre la feuille avec le bon contenu
(Paramètres + salutation + déconnexion), et la fermeture (bouton dédié)
ramène bien à l'état fermé.
confirmant qu'aucune régression visuelle n'est venue de la migration des
breakpoints).
🤖 Generated with Claude Code