2020-09-19 22:10:52 -07:00
|
|
|
|
import React from "react";
|
|
|
|
|
import {
|
|
|
|
|
Box,
|
|
|
|
|
IconButton,
|
|
|
|
|
HStack,
|
2020-09-20 20:10:26 -07:00
|
|
|
|
Link as ChakraLink,
|
2020-09-19 22:10:52 -07:00
|
|
|
|
Tooltip,
|
|
|
|
|
useColorMode,
|
2020-12-25 09:08:33 -08:00
|
|
|
|
} from "@chakra-ui/react";
|
2020-09-19 22:10:52 -07:00
|
|
|
|
import { EmailIcon, MoonIcon, SunIcon } from "@chakra-ui/icons";
|
|
|
|
|
import { SiGithub } from "react-icons/si";
|
2020-12-07 22:56:23 -08:00
|
|
|
|
import { Link as RouterLink, useRouteMatch } from "react-router-dom";
|
2020-09-19 22:10:52 -07:00
|
|
|
|
|
|
|
|
|
function GlobalFooter() {
|
2020-09-20 20:10:26 -07:00
|
|
|
|
const classicDTIUrl = useClassicDTIUrl();
|
|
|
|
|
|
2020-09-19 22:10:52 -07:00
|
|
|
|
return (
|
2020-09-20 20:10:26 -07:00
|
|
|
|
<Box as="footer" display="flex" alignItems="flex-start">
|
|
|
|
|
<Box
|
|
|
|
|
// This empty box grows at the same rate as the box on the right, so
|
|
|
|
|
// the middle box will be centered, if there's space!
|
|
|
|
|
flex="1 0 0"
|
|
|
|
|
/>
|
|
|
|
|
<Box textAlign="center" fontSize="xs">
|
|
|
|
|
<HStack spacing="4" justifyContent="center">
|
|
|
|
|
<ChakraLink href="https://impress.openneo.net/terms">
|
|
|
|
|
Terms of Use
|
|
|
|
|
</ChakraLink>
|
2020-12-07 22:56:23 -08:00
|
|
|
|
<ChakraLink as={RouterLink} to="/privacy">
|
2020-12-07 22:56:58 -08:00
|
|
|
|
Privacy Policy
|
2020-12-07 22:56:23 -08:00
|
|
|
|
</ChakraLink>
|
2020-09-20 20:10:26 -07:00
|
|
|
|
<ChakraLink href={classicDTIUrl}>Classic DTI</ChakraLink>
|
|
|
|
|
</HStack>
|
|
|
|
|
<Box as="p" opacity="0.75">
|
|
|
|
|
Images © 2000–{new Date().getFullYear()} Neopets, Inc. All Rights
|
|
|
|
|
Reserved. Used With Permission.
|
|
|
|
|
</Box>
|
2020-09-19 22:10:52 -07:00
|
|
|
|
</Box>
|
|
|
|
|
<HStack
|
2020-09-20 20:10:26 -07:00
|
|
|
|
flex="1 0 0"
|
2020-09-19 22:10:52 -07:00
|
|
|
|
spacing="2"
|
|
|
|
|
marginLeft="3"
|
2020-09-20 20:10:26 -07:00
|
|
|
|
justifyContent="flex-end"
|
2020-09-19 22:10:52 -07:00
|
|
|
|
opacity="0.75"
|
|
|
|
|
transition="opacity 0.2s"
|
|
|
|
|
_hover={{ opacity: "1" }}
|
|
|
|
|
_focusWithin={{ opacity: "1" }}
|
2020-09-20 20:10:26 -07:00
|
|
|
|
// This will center our content against the top two lines of text to
|
|
|
|
|
// our left, which ends up feeling like the right visual balance, even
|
|
|
|
|
// when the text wraps to 3 lines on mobile.
|
|
|
|
|
// 2 lines at 1.5 line height = 3em.
|
|
|
|
|
fontSize="xs"
|
|
|
|
|
minHeight="3em"
|
2020-09-19 22:10:52 -07:00
|
|
|
|
>
|
|
|
|
|
<Tooltip label="Email">
|
|
|
|
|
<IconButton
|
|
|
|
|
as="a"
|
|
|
|
|
href="mailto:matchu@openneo.net"
|
|
|
|
|
size="sm"
|
|
|
|
|
variant="outline"
|
|
|
|
|
aria-label="Email"
|
|
|
|
|
icon={<EmailIcon />}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
<Tooltip label="GitHub">
|
|
|
|
|
<IconButton
|
|
|
|
|
as="a"
|
|
|
|
|
href="https://github.com/matchu/impress-2020"
|
|
|
|
|
size="sm"
|
|
|
|
|
variant="outline"
|
|
|
|
|
aria-label="GitHub"
|
|
|
|
|
icon={<SiGithub />}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
<ColorModeButton />
|
|
|
|
|
</HStack>
|
|
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ColorModeButton() {
|
|
|
|
|
const { colorMode, toggleColorMode } = useColorMode();
|
|
|
|
|
const label = colorMode === "light" ? "Dark mode" : "Light mode";
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Tooltip label={label}>
|
|
|
|
|
<IconButton
|
|
|
|
|
size="sm"
|
|
|
|
|
variant="outline"
|
|
|
|
|
aria-label={label}
|
|
|
|
|
icon={colorMode === "light" ? <MoonIcon /> : <SunIcon />}
|
|
|
|
|
onClick={toggleColorMode}
|
|
|
|
|
/>
|
|
|
|
|
</Tooltip>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-20 20:10:26 -07:00
|
|
|
|
function useClassicDTIUrl() {
|
|
|
|
|
const itemPageMatch = useRouteMatch("/items/:itemId");
|
|
|
|
|
const userItemsPageMatch = useRouteMatch("/user/:userId/items");
|
|
|
|
|
const modelingPageMatch = useRouteMatch("/modeling");
|
|
|
|
|
|
|
|
|
|
if (itemPageMatch) {
|
|
|
|
|
const { itemId } = itemPageMatch.params;
|
|
|
|
|
return `https://impress.openneo.net/items/${itemId}`;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (userItemsPageMatch) {
|
|
|
|
|
const { userId } = userItemsPageMatch.params;
|
|
|
|
|
return `https://impress.openneo.net/user/${userId}/closet`;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (modelingPageMatch) {
|
|
|
|
|
return "https://impress.openneo.net/modeling";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "https://impress.openneo.net/";
|
|
|
|
|
}
|
|
|
|
|
|
2020-09-19 22:10:52 -07:00
|
|
|
|
export default GlobalFooter;
|