fix(navbar): pill etiketleri her genişlikte gizli — çakışma kapanır #3

Merged
bilal merged 1 commits from duzeltme/navbar-tasmasi into main 2026-09-22 23:32:15 +03:00
2 changed files with 12 additions and 7 deletions
Showing only changes of commit 9abfdf4aa9 - Show all commits

View File

@@ -54,11 +54,14 @@ export async function UserNav() {
className="inline-flex h-9 items-center gap-1.5 whitespace-nowrap rounded-full border border-slate-200 bg-white px-3 text-xs font-semibold text-slate-700 transition-colors duration-200 hover:border-slate-300 hover:bg-slate-50 sm:h-12 sm:gap-2 sm:px-5 sm:text-sm" className="inline-flex h-9 items-center gap-1.5 whitespace-nowrap rounded-full border border-slate-200 bg-white px-3 text-xs font-semibold text-slate-700 transition-colors duration-200 hover:border-slate-300 hover:bg-slate-50 sm:h-12 sm:gap-2 sm:px-5 sm:text-sm"
> >
<ClipboardList className="size-3.5 text-primary sm:size-4" aria-hidden /> <ClipboardList className="size-3.5 text-primary sm:size-4" aria-hidden />
{/* ListemButonu:39 ile aynı görünürlük deseni: 375 px'te ve lg–xl {/* Etiket her genişlikte gizli; anlamı yukarıdaki aria-label + title
arasında metin gizli, ikon+aria-label anlamı taşıyor. */} taşıyor. Konteyner `max-w-6xl` = 1152 px'te kilitli olduğu için
<span className="hidden sm:inline lg:hidden xl:inline"> `xl` (1280 px) yeni yer AÇMIYOR, ama eski görünürlük deseni tam
Yapay Zeka Listem orada iki etiketi birden geri getiriyordu (+229 px) ve ortadaki
</span> `absolute` nav ile çakışma üretiyordu. Sağ kümenin bütçesi ~304 px
= dört ikon-pill; bir etiket bile fazla. ListemButonu:38 ile aynı
desen (tek kaynak). */}
<span className="hidden">Yapay Zeka Listem</span>
</Link> </Link>
<Link <Link
href="/paket?kaynak=nav" href="/paket?kaynak=nav"

View File

@@ -35,8 +35,10 @@ export function ListemButonu() {
className="relative inline-flex h-9 cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-full border border-slate-200 bg-white px-3 text-xs font-semibold text-slate-700 transition-[color,background-color,border-color,transform] duration-200 hover:border-slate-300 hover:bg-slate-50 active:scale-[0.97] sm:h-12 sm:gap-2 sm:px-5 sm:text-sm" className="relative inline-flex h-9 cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-full border border-slate-200 bg-white px-3 text-xs font-semibold text-slate-700 transition-[color,background-color,border-color,transform] duration-200 hover:border-slate-300 hover:bg-slate-50 active:scale-[0.97] sm:h-12 sm:gap-2 sm:px-5 sm:text-sm"
> >
<ListChecks className="size-3.5 text-primary sm:size-4" aria-hidden /> <ListChecks className="size-3.5 text-primary sm:size-4" aria-hidden />
{/* lg–xl: ortadaki nav ile yer dar — metin gizli, ikon+rozet kalır */} {/* Etiket her genişlikte gizli: konteyner 1152 px'te sabit olduğu için
<span className="hidden sm:inline lg:hidden xl:inline">Kendi Listem</span> hiçbir kırılma noktasında etikete yer yok — ikon + rozet + yukarıdaki
aria-label anlamı taşıyor. UserNav'daki pill'le aynı desen. */}
<span className="hidden">Kendi Listem</span>
{liste.length > 0 ? ( {liste.length > 0 ? (
// key=length: her eklemede rozet yeniden doğar ve spring ile oturur // key=length: her eklemede rozet yeniden doğar ve spring ile oturur
<motion.span <motion.span