Files
SweetHome/app/components/BottomNav.js

63 lines
2.5 KiB
JavaScript
Raw Normal View History

2026-06-04 22:54:34 +03:00
"use client";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { Home, Building, Calendar, Settings, CreditCard, Briefcase } from "lucide-react";
2026-06-04 22:54:34 +03:00
import React, { useEffect, useState } from "react";
export default function BottomNav({ isOwner, isOwnerOrAgent }) {
const pathname = usePathname();
2026-06-04 22:54:34 +03:00
const [isMounted, setIsMounted] = useState(false);
const bookingsHref = isOwner ? "/owner/reservations" : "/reservations";
useEffect(() => {
setIsMounted(true);
}, []);
const items = [
{ href: "/", label: "الرئيسية", icon: Home },
{ href: "/properties", label: "عقاراتنا", icon: Building },
...(isOwnerOrAgent ? [{ href: "/owner/properties", label: "عقاراتي", icon: Briefcase }] : []),
2026-06-04 22:54:34 +03:00
{ href: bookingsHref, label: "الحجوزات", icon: Calendar },
2026-06-16 14:12:26 +03:00
{ href: "/payments", label: "المدفوعات", icon: CreditCard },
2026-06-04 22:54:34 +03:00
{ href: "/settings", label: "الإعدادات", icon: Settings },
];
const isActive = (href) => {
if (href === "/") return pathname === "/";
return pathname.startsWith(href);
};
2026-06-04 22:54:34 +03:00
return (
2026-06-28 16:57:02 +03:00
<div className="fixed bottom-0 left-0 right-0 z-50 flex justify-center pb-4 pt-2 pointer-events-none">
<nav className="bg-gray-50 rounded-3xl px-4 py-2 shadow-[0_4px_24px_rgba(251,146,60,0.25)] pointer-events-auto">
<div className="flex items-center justify-center gap-1">
{items.map((it) => {
const Icon = it.icon;
const active = isActive(it.href);
return (
<Link
key={it.href}
href={it.href}
className={`relative flex flex-col items-center justify-center px-3 py-2 rounded-xl transition-all duration-200 ease-out hover:shadow-md hover:bg-white/80 ${active ? "bg-white shadow-sm text-amber-600" : "text-gray-700 hover:text-amber-600"}`}
>
<div className="relative">
<Icon className="w-6 h-6" />
{it.badge > 0 && (
<div className="absolute -top-2 -right-2 bg-red-500 text-white text-xs font-bold rounded-full w-5 h-5 flex items-center justify-center">
{it.badge > 9 ? "9+" : it.badge}
</div>
)}
</div>
<div className="mt-1 text-xs text-center" aria-hidden>
{it.label}
</div>
</Link>
);
})}
</div>
</nav>
</div>
2026-06-04 22:54:34 +03:00
);
}