import clsx from "clsx"; import { AnimatePresence, motion } from "framer-motion"; import Link from "next/link"; import React from "react"; import Menu from "@/components/icons/menu.svg"; import User from "@/components/icons/user.svg"; import Logo from "../public/logo.svg"; import Dropdown, { DropdownItem, DropdownProps } from "./dropdown"; import Adjustments from "./icons/adjustments.svg"; import Cash from "./icons/cash.svg"; import DotsVertical from "./icons/dots-vertical.svg"; import Github from "./icons/github.svg"; import Login from "./icons/login.svg"; import Logout from "./icons/logout.svg"; import Pencil from "./icons/pencil.svg"; import Question from "./icons/question-mark-circle.svg"; import Support from "./icons/support.svg"; import Twitter from "./icons/twitter.svg"; import LoginForm from "./login-form"; import { useModal } from "./modal"; import { useModalContext } from "./modal/modal-provider"; import Popover from "./popover"; import Preferences from "./preferences"; import { useSession } from "./session"; const HomeLink = () => { return ( ); }; const MobileNavigation: React.VoidFunctionComponent<{ openLoginModal: () => void; }> = ({ openLoginModal }) => { const { user } = useSession(); return (
{user ? null : ( )} {user ? (
{user.isGuest ? ( ) : null}
{user.shortName}
} /> ) : null}
Preferences } > Menu } >
); }; const AppMenu: React.VoidFunctionComponent<{ className?: string }> = ({ className, }) => { return (
New Poll Support
); }; const UserDropdown: React.VoidFunctionComponent< DropdownProps & { openLoginModal: () => void } > = ({ children, openLoginModal, ...forwardProps }) => { const { logout, user } = useSession(); const modalContext = useModalContext(); if (!user) { return null; } return ( {children} {user.isGuest ? ( { modalContext.render({ showClose: true, content: (
Guest
{user.shortName}

You are using a guest session. This allows us to recognize you if you come back later so you can edit your votes.

Read more about guest sessions.
), overlayClosable: true, footer: null, }); }} /> ) : null} {user.isGuest ? ( ) : null} { if (user?.isGuest) { modalContext.render({ title: "Are you sure?", description: "Once a guest session ends it cannot be resumed. You will not be able to edit any votes or comments you've made with this session.", onOk: logout, okButtonProps: { type: "danger", }, okText: "End session", cancelText: "Cancel", }); } else { logout(); } }} />
); }; const StandardLayout: React.VoidFunctionComponent<{ children?: React.ReactNode; }> = ({ children, ...rest }) => { const { user } = useSession(); const [loginModal, openLoginModal] = useModal({ footer: null, overlayClosable: true, showClose: true, content: , }); return (
{loginModal}
New Poll Support Preferences } > {user ? null : ( )}
{user ? (
{user.isGuest ? ( ) : null}
{user.shortName}
{user.isGuest ? "Guest" : "User"}
} /> ) : null}
{children}
Donate
); }; export default StandardLayout;