moonstream/frontend/src/components/Sidebar.js

140 wiersze
3.8 KiB
JavaScript
Czysty Zwykły widok Historia

2021-07-13 11:35:46 +00:00
import {
2021-07-19 11:50:35 +00:00
ProSidebar,
2021-07-13 11:35:46 +00:00
Menu,
MenuItem,
2021-07-19 11:50:35 +00:00
SidebarHeader,
SidebarFooter,
SidebarContent,
} from "react-pro-sidebar";
import { useContext } from "react";
import RouterLink from "next/link";
2021-09-23 12:58:48 +00:00
import { Flex, Image, IconButton, Divider } from "@chakra-ui/react";
2021-07-13 11:35:46 +00:00
import UIContext from "../core/providers/UIProvider/context";
2021-07-19 11:50:35 +00:00
import React from "react";
2021-09-23 12:58:48 +00:00
import {
HamburgerIcon,
ArrowLeftIcon,
ArrowRightIcon,
LockIcon,
} from "@chakra-ui/icons";
2021-07-19 11:50:35 +00:00
import { MdTimeline, MdSettings } from "react-icons/md";
2021-07-20 11:37:53 +00:00
import { ImStatsBars } from "react-icons/im";
2021-08-18 12:39:53 +00:00
import { HiAcademicCap } from "react-icons/hi";
import { WHITE_LOGO_W_TEXT_URL } from "../core/constants";
2021-07-13 11:35:46 +00:00
const Sidebar = () => {
const ui = useContext(UIContext);
return (
<ProSidebar
2021-07-27 14:42:02 +00:00
width="240px"
2021-07-13 11:35:46 +00:00
breakPoint="lg"
toggled={ui.sidebarToggled}
onToggle={ui.setSidebarToggled}
collapsed={ui.sidebarCollapsed}
hidden={!ui.sidebarVisible}
>
2021-07-19 11:50:35 +00:00
<SidebarHeader>
<Flex>
<IconButton
ml={4}
justifySelf="flex-start"
colorScheme="blue"
2021-07-19 11:50:35 +00:00
aria-label="App navigation"
2021-07-27 14:42:02 +00:00
icon={
ui.isMobileView ? (
<HamburgerIcon />
) : ui.sidebarCollapsed ? (
<ArrowRightIcon />
) : (
<ArrowLeftIcon />
)
}
2021-07-19 11:50:35 +00:00
onClick={() => {
ui.isMobileView
? ui.setSidebarToggled(!ui.sidebarToggled)
: ui.setSidebarCollapsed(!ui.sidebarCollapsed);
}}
/>
2021-07-13 11:35:46 +00:00
<Image
// h="full"
// maxH="100%"
maxW="120px"
2021-07-13 11:35:46 +00:00
py="0.75rem"
pl={5}
src={WHITE_LOGO_W_TEXT_URL}
2021-07-13 11:35:46 +00:00
alt="bugout.dev"
/>
2021-07-19 11:50:35 +00:00
</Flex>
</SidebarHeader>
2021-07-30 13:36:52 +00:00
{ui.isLoggedIn && (
<SidebarContent>
<Menu iconShape="square">
<MenuItem icon={<MdTimeline />}>
{" "}
<RouterLink href="/stream">Stream</RouterLink>
</MenuItem>
</Menu>
<Menu iconShape="square">
<MenuItem icon={<ImStatsBars />}>
{" "}
<RouterLink href="/analytics">Analytics </RouterLink>
</MenuItem>
</Menu>
<Menu iconShape="square">
<MenuItem icon={<MdSettings />}>
{" "}
<RouterLink href="/subscriptions">Subscriptions </RouterLink>
</MenuItem>
</Menu>
2021-08-18 12:39:53 +00:00
{ui.isMobileView && (
<Menu iconShape="square">
<MenuItem icon={<HiAcademicCap />}>
<RouterLink href="/welcome">
Learn how to use Moonstream
</RouterLink>
2021-08-18 12:39:53 +00:00
</MenuItem>
</Menu>
)}
2021-07-30 13:36:52 +00:00
</SidebarContent>
)}
{!ui.isLoggedIn && (
<SidebarContent>
2021-09-15 14:58:14 +00:00
{/* <Menu iconShape="square">
2021-07-30 13:36:52 +00:00
<MenuItem
onClick={() => {
ui.toggleModal("register");
ui.setSidebarToggled(false);
}}
>
Sign up
</MenuItem>
2021-09-15 14:58:14 +00:00
</Menu> */}
2021-07-30 13:36:52 +00:00
<Menu iconShape="square">
<MenuItem
onClick={() => {
ui.toggleModal("login");
ui.setSidebarToggled(false);
}}
>
Login
</MenuItem>
</Menu>
</SidebarContent>
)}
2021-09-23 12:58:48 +00:00
<SidebarFooter style={{ paddingBottom: "3rem" }}>
<Divider color="gray.300" w="100%" />
{ui.isLoggedIn && (
<Menu iconShape="square">
<MenuItem icon={<LockIcon />}>
<RouterLink href="/account/tokens">API Tokens</RouterLink>
</MenuItem>
</Menu>
)}
</SidebarFooter>
2021-07-13 11:35:46 +00:00
</ProSidebar>
);
};
export default Sidebar;