mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-12 22:11:06 -05:00
* side layout initial * add elements to side nav * side buttons links * remove clog * calendar page initial * position sticky working * x trends page initial * new table * same mode selector * mobile friendly table * no underline for nav links * xsearch * x trends page outlined * sr initial * relocate calendar components * calendar fix flex * topnav fancier look * layout looking good edition * relocate xtrends * xtrends remove linecharts * x trends new * calender page new * delete headbanner, new login * remove calendar stuff from api * rename stuff in utils * fix user item margin * new home page initial * remove page concept * no pointer xtrends * remove xrank from app * xtrends service * move fa from app * move plus * maps tweaks * new table for plus history * navigational sidebar flex tweaks * builds page * analyzer * user page * free agents * plans * remove mx * tweaks * change layout to grid * home page finalized * mobile nav * restrict main content width * tweaks style * language switcher * container in css * sticky nav * use duplicate icons for now * change mapsketch width to old * chara tour vid * borzoic icons
94 lines
2.6 KiB
TypeScript
94 lines
2.6 KiB
TypeScript
import {
|
|
Box,
|
|
Button,
|
|
Flex,
|
|
IconButton,
|
|
useColorMode,
|
|
useMediaQuery,
|
|
} from "@chakra-ui/react";
|
|
import { useActiveNavItem, useMyTheme, useUser } from "hooks/common";
|
|
import { signIn, signOut } from "next-auth/client";
|
|
import Image from "next/image";
|
|
import Link from "next/link";
|
|
import { FiLogIn, FiLogOut, FiMenu } from "react-icons/fi";
|
|
import ColorModeSwitcher from "./ColorModeSwitcher";
|
|
import LanguageSwitcher from "./LanguageSwitcher";
|
|
|
|
const Header = ({ openNav }: { openNav: () => void }) => {
|
|
const [isSmall] = useMediaQuery("(max-width: 400px)");
|
|
const [user] = useUser();
|
|
const { secondaryBgColor } = useMyTheme();
|
|
const { colorMode } = useColorMode();
|
|
const activeNavItem = useActiveNavItem();
|
|
|
|
return (
|
|
<Box
|
|
display="flex"
|
|
as="header"
|
|
justifySelf="center"
|
|
fontWeight="bold"
|
|
letterSpacing={1}
|
|
justifyContent="space-between"
|
|
alignItems="center"
|
|
mb={1}
|
|
bg={secondaryBgColor}
|
|
>
|
|
<Flex justify="space-between" align="center" width="6rem" px={2}>
|
|
<ColorModeSwitcher /> <LanguageSwitcher />
|
|
<IconButton
|
|
aria-label="Open menu"
|
|
variant="ghost"
|
|
color="current"
|
|
onClick={openNav}
|
|
icon={<FiMenu />}
|
|
_hover={
|
|
colorMode === "dark"
|
|
? { bg: "white", color: "black" }
|
|
: { bg: "black", color: "white" }
|
|
}
|
|
borderRadius="0"
|
|
size="sm"
|
|
display={["flex", null, null, "none"]}
|
|
/>
|
|
</Flex>
|
|
<Flex justify="center" align="center" fontSize="sm" color="white.300">
|
|
<Link href="/">{isSmall ? "s.ink" : "sendou.ink"}</Link>{" "}
|
|
{activeNavItem && (
|
|
<>
|
|
<Box mx={1}>-</Box>{" "}
|
|
<Image
|
|
src={`/layout/${activeNavItem.code}.png`}
|
|
height={24}
|
|
width={24}
|
|
priority
|
|
/>
|
|
<Box ml={1}>{activeNavItem.name}</Box>
|
|
</>
|
|
)}
|
|
</Flex>
|
|
<Button
|
|
width="6rem"
|
|
data-cy="color-mode-toggle"
|
|
aria-label="Log in"
|
|
variant="ghost"
|
|
color="current"
|
|
onClick={() => (user ? signOut() : signIn("discord"))}
|
|
leftIcon={user ? <FiLogOut /> : <FiLogIn />}
|
|
_hover={
|
|
colorMode === "dark"
|
|
? { bg: "white", color: "black" }
|
|
: { bg: "black", color: "white" }
|
|
}
|
|
borderRadius="0"
|
|
size="xs"
|
|
px={2}
|
|
height="30px"
|
|
>
|
|
{user ? "Log out" : "Log in"}
|
|
</Button>
|
|
</Box>
|
|
);
|
|
};
|
|
|
|
export default Header;
|