Skip to content

fix(mobile): THI-342 — textarea 16px on mobile (iOS auto-zoom) + UserMenu tap-target floor#375

Merged
thierryvm merged 1 commit into
mainfrom
fix/THI-342-mobile-textarea-zoom
Jun 6, 2026
Merged

fix(mobile): THI-342 — textarea 16px on mobile (iOS auto-zoom) + UserMenu tap-target floor#375
thierryvm merged 1 commit into
mainfrom
fix/THI-342-mobile-textarea-zoom

Conversation

@thierryvm

@thierryvm thierryvm commented Jun 6, 2026

Copy link
Copy Markdown
Owner

THI-342 — le formulaire de signalement déborde sur mobile

Corrige le bug signalé dans le ticket support 21f3df1e : le formulaire « Signaler un problème » débordait du viewport sur iPhone.

Cause racine (diagnostiquée par mobile-responsive-auditor)

Le <textarea> de description était en text-sm (14px). Sur iOS Safari, tout champ < 16px déclenche un auto-zoom au focus — ce zoom élargit la viewport logique puis la dézoome, provoquant le débordement observé.

Fix

  • SupportTicketModal.tsx : text-smtext-base md:text-sm (16px sur mobile = plus d'auto-zoom, 14px restauré sur desktop). Même pattern que MessageInput.tsx.
  • UserMenu.tsx (nit du même audit) : plancher min-h-11 (44px Apple HIG) explicite sur les items du dropdown. Ils franchissaient déjà 44px via le padding ; le plancher garantit la cible tactile contre un futur refactor. 0 changement visuel desktop.

Hors scope (volontaire)

Le nit sidebar pb-[max(1rem,env(...))] proposé par l'audit est écarté : il ajouterait 16px de padding bottom sur desktop aussi (où env()=0) = régression desktop. Le env(safe-area-inset-bottom) actuel reste correct (0 desktop, 34px iPhone notché).

Validation

  • text-base md:text-sm = className-only, 0 logique touchée.
  • type-check ✅ · lint ✅ · 109 tests support/auth ✅.
  • Gates : ui-auditor + feature-dev:code-reviewer + Voie A mobile 390px (à venir avant merge).

🤖 Generated with Claude Code

Summary by Sourcery

Ajuster la taille de la zone de texte du formulaire mobile et les zones cliquables des éléments du menu utilisateur pour améliorer l’ergonomie et l’accessibilité sur iOS.

Corrections de bugs :

  • Empêcher le zoom automatique de Safari iOS de provoquer un dépassement de la fenêtre d’affichage sur la zone de texte de description du ticket de support en utilisant une taille de police de 16px sur mobile.

Améliorations :

  • Imposer une hauteur minimale pour les éléments du menu déroulant utilisateur afin de maintenir des zones de tap suffisantes sur tous les appareils.
Original summary in English

Summary by Sourcery

Adjust mobile form textarea sizing and user menu item tap targets to improve iOS usability and accessibility.

Bug Fixes:

  • Prevent iOS Safari auto-zoom causing viewport overflow on the support ticket description textarea by using a 16px font size on mobile.

Enhancements:

  • Enforce a minimum height on user menu dropdown items to maintain adequate tap targets across devices.

…Menu tap-target floor

SupportTicketModal description textarea was text-sm (14px). On iOS Safari any
input < 16px triggers a focus auto-zoom, which pushed the support form past the
viewport (the THI-342 "form overflows on mobile" report). Switch to
text-base md:text-sm: 16px on mobile (no zoom), 14px restored on desktop — the
same pattern already used in MessageInput.tsx.

Also add an explicit min-h-11 (44px) floor to the UserMenu dropdown itemClass.
The items already cleared 44px via padding; the floor makes the Apple HIG tap
target guaranteed against future padding refactors. No desktop visual change.

Found by mobile-responsive-auditor (pre-deadline sweep). No logic touched
(className-only): type-check + lint clean, 109 support/auth tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
terminal-learning Ready Ready Preview, Comment Jun 6, 2026 7:38pm

@sourcery-ai

sourcery-ai Bot commented Jun 6, 2026

Copy link
Copy Markdown
Guide du·de la relecteur·rice (replié sur les petites PR)

Guide du·de la Relecteur·rice

Ajuste la taille de police du textarea sur mobile pour éviter que le zoom automatique d’iOS Safari provoque un dépassement de la fenêtre d’affichage et applique une hauteur minimale de zone tactile pour les éléments du menu utilisateur afin de respecter les recommandations d’accessibilité, sans changer la logique métier.

Schéma du flux pour le comportement du focus sur le textarea iOS après le changement de taille de police

flowchart LR
  A["L’utilisateur·rice iOS met le focus sur le textarea dans SupportTicketModal"] --> B["Taille de police du textarea text-base (16px) sur mobile"]
  B --> C["Aucun zoom automatique iOS Safari déclenché"]
  C --> D["La fenêtre d’affichage reste stable"]
  D --> E["Le formulaire de ticket de support reste dans la fenêtre d’affichage mobile"]

  A2["L’utilisateur·rice iOS met le focus sur le textarea avant la correction"] --> B2["Taille de police du textarea text-sm (14px)"]
  B2 --> C2["Zoom automatique iOS Safari au focus"]
  C2 --> D2["La fenêtre d’affichage est redimensionnée temporairement"]
  D2 --> E2["Le contenu du formulaire dépasse la fenêtre d’affichage"]
Loading

Modifications par fichier

Modification Détails Fichiers
Augmenter la taille de police du textarea de description du ticket de support à 16px sur mobile pour éviter le zoom automatique d’iOS Safari et conserver 14px sur desktop.
  • Mise à jour des classes Tailwind sur le textarea de description du ticket de support : passage d’un seul text-sm à text-base md:text-sm réactif, afin que le mobile utilise 16px tandis que le desktop reste à 14px.
  • Ajout d’un commentaire en ligne expliquant le comportement de zoom automatique d’iOS Safari pour les champs en dessous de 16px et la façon dont les classes choisies reproduisent le modèle déjà utilisé par MessageInput.
src/app/components/support/SupportTicketModal.tsx
S’assurer que les éléments du menu déroulant UserMenu ont une hauteur minimale explicite pour respecter les recommandations concernant la taille des zones tactiles.
  • Extension de la chaîne de classes partagée des éléments de menu pour inclure min-h-11 (44px), de sorte que chaque élément ait un plancher de hauteur de zone tactile même si le padding est remanié plus tard.
src/app/components/auth/UserMenu.tsx

Conseils et commandes

Interagir avec Sourcery

  • Déclencher une nouvelle revue : Commentez @sourcery-ai review sur la pull request.
  • Poursuivre les discussions : Répondez directement aux commentaires de revue de Sourcery.
  • Générer une issue GitHub à partir d’un commentaire de revue : Demandez à Sourcery de créer une issue à partir d’un commentaire de revue en y répondant. Vous pouvez également répondre à un commentaire de revue avec @sourcery-ai issue pour créer une issue à partir de celui-ci.
  • Générer un titre de pull request : Écrivez @sourcery-ai n’importe où dans le titre de la pull request pour générer un titre à tout moment. Vous pouvez également commenter
    @sourcery-ai title sur la pull request pour (re)générer le titre à tout moment.
  • Générer un résumé de pull request : Écrivez @sourcery-ai summary n’importe où dans
    le corps de la pull request pour générer un résumé de PR à tout moment exactement à l’endroit souhaité. Vous pouvez également commenter @sourcery-ai summary sur la pull request pour (re)générer le résumé à tout moment.
  • Générer le guide du·de la relecteur·rice : Commentez @sourcery-ai guide sur la pull request pour (re)générer le guide du·de la relecteur·rice à tout moment.
  • Résoudre tous les commentaires Sourcery : Commentez @sourcery-ai resolve sur la pull request pour résoudre tous les commentaires Sourcery. Utile si vous avez déjà traité tous les commentaires et ne voulez plus les voir.
  • Ignorer toutes les revues Sourcery : Commentez @sourcery-ai dismiss sur la pull request pour ignorer toutes les revues Sourcery existantes. Particulièrement utile si vous voulez repartir de zéro avec une nouvelle revue – n’oubliez pas de commenter
    @sourcery-ai review pour déclencher une nouvelle revue !

Personnaliser votre expérience

Accédez à votre tableau de bord pour :

  • Activer ou désactiver des fonctionnalités de revue comme le résumé de pull request généré par Sourcery, le guide du·de la relecteur·rice, et d’autres.
  • Changer la langue de la revue.
  • Ajouter, supprimer ou modifier des instructions de revue personnalisées.
  • Ajuster d’autres paramètres de revue.

Obtenir de l’aide

Original review guide in English
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Adjusts mobile textarea font size to prevent iOS Safari auto-zoom causing viewport overflow and enforces a minimum tap-target height for user menu items to meet accessibility guidelines, without changing business logic.

Flow diagram for iOS textarea focus behavior after font-size change

flowchart LR
  A["iOS user focuses textarea in SupportTicketModal"] --> B["Textarea font-size text-base (16px) on mobile"]
  B --> C["No iOS Safari auto-zoom triggered"]
  C --> D["Viewport remains stable"]
  D --> E["Support ticket form stays within mobile viewport"]

  A2["iOS user focuses textarea before fix"] --> B2["Textarea font-size text-sm (14px)"]
  B2 --> C2["iOS Safari auto-zoom on focus"]
  C2 --> D2["Viewport temporarily resized"]
  D2 --> E2["Form content overflows viewport"]
Loading

File-Level Changes

Change Details Files
Increase support ticket description textarea font size on mobile to 16px to avoid iOS Safari auto-zoom and preserve 14px on desktop.
  • Updated Tailwind classes on the support ticket description textarea from a single text-sm to responsive text-base md:text-sm so mobile uses 16px while desktop keeps 14px.
  • Added an in-line comment explaining the iOS Safari auto-zoom behavior for inputs below 16px and how the chosen classes mirror the existing MessageInput pattern.
src/app/components/support/SupportTicketModal.tsx
Ensure UserMenu dropdown items have an explicit minimum height to meet touch target guidelines.
  • Extended the shared menu item class string to include min-h-11 (44px) so each item has a floor on tap-target height even if padding is refactored later.
src/app/components/auth/UserMenu.tsx

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - j'ai laissé quelques commentaires généraux :

  • Le commentaire JSX explicatif au-dessus de la zone de texte est assez long et spécifique à l’outil ; envisage de le condenser pour ne garder que l’explication comportementale essentielle (zoom automatique iOS <16px) et de t’appuyer sur la référence au ticket dans la description de la PR pour le contexte supplémentaire.
  • Comme min-h-11 encode une contrainte de zone cliquable de l’Apple HIG, tu pourrais l’extraire dans une classe utilitaire partagée ou une constante afin que les autres éléments interactifs puissent réutiliser la même taille minimale de zone tactile de manière cohérente.
Prompt pour les agents IA
Veuillez traiter les commentaires de cette revue de code :

## Commentaires généraux
- Le commentaire JSX explicatif au-dessus de la zone de texte est assez long et spécifique à l’outil ; envisage de le condenser pour ne garder que l’explication comportementale essentielle (zoom automatique iOS <16px) et de t’appuyer sur la référence au ticket dans la description de la PR pour le contexte supplémentaire.
- Comme `min-h-11` encode une contrainte de zone cliquable de l’Apple HIG, tu pourrais l’extraire dans une classe utilitaire partagée ou une constante afin que les autres éléments interactifs puissent réutiliser la même taille minimale de zone tactile de manière cohérente.

Sourcery est gratuit pour l’open source - si tu apprécies nos revues, pense à les partager ✨
Aide-moi à être plus utile ! Clique sur 👍 ou 👎 pour chaque commentaire et j’utiliserai ces retours pour améliorer tes revues.
Original comment in English

Hey - I've left some high level feedback:

  • The explanatory JSX comment above the textarea is quite long and tool-specific; consider tightening it to the essential behavioral note (iOS <16px auto-zoom) and relying on the ticket reference in the PR description for further context.
  • Since min-h-11 encodes an Apple HIG tap-target constraint, you might want to extract this into a shared utility class or constant so that other interactive elements can reuse the same minimum touch target size consistently.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The explanatory JSX comment above the textarea is quite long and tool-specific; consider tightening it to the essential behavioral note (iOS <16px auto-zoom) and relying on the ticket reference in the PR description for further context.
- Since `min-h-11` encodes an Apple HIG tap-target constraint, you might want to extract this into a shared utility class or constant so that other interactive elements can reuse the same minimum touch target size consistently.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@thierryvm thierryvm merged commit 5c4dfef into main Jun 6, 2026
4 checks passed
@thierryvm thierryvm deleted the fix/THI-342-mobile-textarea-zoom branch June 6, 2026 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant