import { AppShell, ScrollArea, Stack, Group, Paper } from "@mantine/core";
import { NavLink } from "./nav-link";
import { useIsMobile } from "@/hooks/use-is-mobile";
import { useAuth } from  "@/contexts/auth-context";
import { useLinks } from "../hooks/use-links";
import { memo } from "react";
import { useIsPWA } from "@/hooks/use-is-pwa";

const Navbar = () => {
  const { user, roles } = useAuth()
  const isMobile = useIsMobile();
  const isPWA = useIsPWA();

  const links = useLinks(user?.id, roles);

  const bottomOffset = isPWA
    ? 'max(env(safe-area-inset-bottom, 0px), 0.5rem)'
    : 'env(safe-area-inset-bottom, 0px)';

  if (isMobile) return (
    <Paper component='nav' role='navigation' withBorder shadow="sm" radius='lg' h='4rem' w='calc(100% - 1rem)' pos='fixed' m='0.5rem' bottom={bottomOffset} style={{ zIndex: 10 }}>
      <Group gap='xs' justify='space-around' h='100%' w='100%' px={{ base: 12, sm: 0 }}>
        {links.map((link) => (
          <NavLink key={link.href} {...link} />
        ))}
      </Group>
    </Paper>
  )

  return <AppShell.Navbar p="xs" role='navigation'>
    <AppShell.Section grow component={ScrollArea}>
      <Stack gap='xs' mx='auto' w='fit-content' justify='end' mt='md'>
        {links.map((link) => (
          <NavLink key={link.href} {...link} />
        ))}
      </Stack>
    </AppShell.Section>
  </AppShell.Navbar>
}

export default memo(Navbar);
