diff --git a/src/components/crapp/BarraSottosezioni.tsx b/src/components/crapp/BarraSottosezioni.tsx index 5276246..1b12e2c 100644 --- a/src/components/crapp/BarraSottosezioni.tsx +++ b/src/components/crapp/BarraSottosezioni.tsx @@ -15,14 +15,13 @@ export type VoceSottosezione = { const transizioneTab = { type: "tween" as const, duration: 0.16, ease: [0.25, 0.1, 0.25, 1] }; /** - * Barra di sottosezioni in un'unica fila scorrevole (swipe orizzontale) e - * pannello che mostra una sola sezione alla volta, cambiabile anche con - * swipe sul contenuto. + * Barra di sottosezioni in un'unica fila e pannello che mostra una sola sezione + * alla volta, cambiabile anche con swipe sul contenuto. * - * `variante="sottolineatura"`: tab giustificate su tutta la larghezza, senza scroll, con - * pillola piena sulla tab attiva (Squadra e Classifica CSI). Default `pillole`: tab scorrevoli - * a larghezza naturale, usate dal Profilo. Il titolo ripetuto sotto la barra non viene mai - * mostrato: l’etichetta è già nella tab. + * `variante="sottolineatura"`: pillola piena sulla tab attiva (Squadra e Classifica CSI); + * su mobile la sola barra tab scorre in orizzontale senza allargare la pagina. + * Default `pillole`: tab a larghezza naturale (Profilo). Il titolo ripetuto sotto la + * barra non viene mai mostrato: l’etichetta è già nella tab. */ export function BarraSottosezioni({ voci, @@ -45,9 +44,8 @@ export function BarraSottosezioni({ const sottolineatura = variante === "sottolineatura"; useEffect(() => { - // `auto`: lo smooth competerebbe col tween del pannello sul main thread. tabRefs.current[attiva]?.scrollIntoView({ - behavior: "auto", + behavior: "smooth", inline: "center", block: "nearest", }); @@ -64,64 +62,69 @@ export function BarraSottosezioni({ if (!voce) return null; return ( -