feat: redesign mobile bottom nav with glass styling

This commit is contained in:
Developer
2026-07-28 09:07:39 +07:00
parent a7cc70b5a3
commit 7b517c388f
@@ -10,8 +10,8 @@ export function MobileNav() {
const pathname = usePathname(); const pathname = usePathname();
return ( return (
<nav className="md:hidden fixed bottom-0 inset-x-0 z-10 border-t border-border/50 bg-background/80 backdrop-blur-lg"> <nav className="md:hidden fixed bottom-0 inset-x-0 z-30 glass-intense border-t border-glass-border">
<div className="flex"> <div className="flex items-center justify-around h-14 px-2">
{mobileNavItems.map(({ href, label, icon: Icon, matchPrefix }) => { {mobileNavItems.map(({ href, label, icon: Icon, matchPrefix }) => {
const active = isActivePath(pathname, matchPrefix); const active = isActivePath(pathname, matchPrefix);
return ( return (
@@ -19,14 +19,16 @@ export function MobileNav() {
key={href} key={href}
href={href} href={href}
className={cn( className={cn(
"flex-1 flex flex-col items-center gap-1 py-2 text-[11px] font-medium transition-all relative", "flex flex-col items-center gap-0.5 py-1 px-3 rounded-lg transition-all relative min-w-0",
active ? "text-cyan-400" : "text-muted-foreground/60", active
? "text-primary"
: "text-text-secondary/50 hover:text-text-secondary/80",
)} )}
> >
<Icon className="size-5" /> <Icon className="size-5" />
<span>{label}</span> <span className="text-[10px] font-medium leading-tight">{label}</span>
{active && ( {active && (
<span className="absolute -top-px left-1/2 -translate-x-1/2 size-1 rounded-full bg-cyan-400 shadow-[0_0_6px] shadow-cyan-400/80" /> <span className="absolute -top-0.5 left-1/2 -translate-x-1/2 size-1 rounded-full bg-primary shadow-[0_0_6px] shadow-primary/80" />
)} )}
</Link> </Link>
); );