Files
compras/resources/js/components/nav-main.tsx
T
nala 413c201d97
tests / ci (push) Canceled after 0s
commit5
2026-10-29 22:03:09 +02:00

60 lines
2.1 KiB
TypeScript

import { Link } from '@inertiajs/react';
import {
SidebarGroup,
SidebarGroupLabel,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from '@/components/ui/sidebar';
import { useCurrentUrl } from '@/hooks/use-current-url';
import { toUrl } from '@/lib/utils';
import type { NavItem } from '@/types';
export function NavMain({
items,
title = 'Navegação',
}: {
items: NavItem[];
title?: string;
}) {
const { isCurrentOrParentUrl, currentUrl } = useCurrentUrl();
const receivingOrder = /^\/ordens\/\d+\/recepcoes/.test(currentUrl);
return (
<SidebarGroup className="px-2 py-0">
<SidebarGroupLabel>{title}</SidebarGroupLabel>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
<SidebarMenuButton
asChild
isActive={
(toUrl(item.href) === '/recepcoes' &&
receivingOrder) ||
(isCurrentOrParentUrl(item.href) &&
!(
toUrl(item.href) === '/ordens' &&
receivingOrder
))
}
tooltip={{ children: item.title }}
>
{item.fullPage ? (
<a href={toUrl(item.href)}>
{item.icon && <item.icon />}
<span>{item.title}</span>
</a>
) : (
<Link href={item.href} prefetch>
{item.icon && <item.icon />}
<span>{item.title}</span>
</Link>
)}
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroup>
);
}