mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-01 16:08:30 +00:00
Support old and new TopNav designs
This commit is contained in:
1 parent
2b6f54bce1
commit
01556b32dc
1 file changed
+140
-16
@@ -5,6 +5,8 @@ import { MigrationTopNavSession } from "../../migration/MigrationTopNav_Session"
|
||||
import { FrontendUrlConfig } from "../../common/FrontendUrlConfig";
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import {
|
||||
faGavel,
|
||||
faGrinBeamSweat,
|
||||
faMicrophone,
|
||||
faVolumeUp,
|
||||
faPlus,
|
||||
@@ -17,6 +19,7 @@ import {
|
||||
} from "@fortawesome/free-solid-svg-icons";
|
||||
import { faPatreon } from "@fortawesome/free-brands-svg-icons";
|
||||
import { t } from "i18next";
|
||||
import { USE_REFRESH } from "../../Refresh";
|
||||
|
||||
interface Props {
|
||||
sessionWrapper: SessionWrapper;
|
||||
@@ -32,25 +35,146 @@ function NewTopNavFc(props: Props) {
|
||||
myDataLink = `/profile/${username}`;
|
||||
}
|
||||
|
||||
// const [mobileHamburgerIsActive, setMobileHamburgerIsActive] =
|
||||
// useState<boolean>(false);
|
||||
const [mobileHamburgerIsActive, setMobileHamburgerIsActive] = useState<boolean>(false);
|
||||
|
||||
// const toggleHamburger = () => {
|
||||
// setMobileHamburgerIsActive(!mobileHamburgerIsActive);
|
||||
// };
|
||||
const toggleHamburger = () => {
|
||||
setMobileHamburgerIsActive(!mobileHamburgerIsActive);
|
||||
};
|
||||
|
||||
// const closeHamburger = () => {
|
||||
// // TODO: This is an ergonomic hack.
|
||||
// // The hamburger ideally should close whenever it is no longer active.
|
||||
// setMobileHamburgerIsActive(false);
|
||||
// };
|
||||
const closeHamburger = () => {
|
||||
// TODO: This is an ergonomic hack.
|
||||
// The hamburger ideally should close whenever it is no longer active.
|
||||
setMobileHamburgerIsActive(false);
|
||||
};
|
||||
|
||||
// const navbarClasses = mobileHamburgerIsActive
|
||||
// ? "navbar-menu is-active"
|
||||
// : "navbar-menu";
|
||||
// const navbarBurgerClasses = mobileHamburgerIsActive
|
||||
// ? "navbar-burger is-active"
|
||||
// : "navbar-burger";
|
||||
const navbarClasses = mobileHamburgerIsActive ? "navbar-menu is-active" : "navbar-menu";
|
||||
const navbarBurgerClasses = mobileHamburgerIsActive ? "navbar-burger is-active" : "navbar-burger";
|
||||
|
||||
if (!USE_REFRESH) {
|
||||
return (
|
||||
<>
|
||||
<nav className="navbar is-transparent padding-bottom-1em">
|
||||
<div className="navbar-brand">
|
||||
<Link className="navbar-item" to="/">
|
||||
<img src="/fakeyou/fakeyou-nav-logo-mascot.webp" alt="FakeYou: Cartoon and Celebrity Text to Speech" />
|
||||
</Link>
|
||||
<div className={navbarBurgerClasses} data-target="navbarExampleTransparentExample" onClick={() => toggleHamburger()}>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="navbarExampleTransparentExample" className={navbarClasses}>
|
||||
<div className="navbar-start">
|
||||
|
||||
<Link to={FrontendUrlConfig.cloneRequestPage()}
|
||||
className="navbar-item "
|
||||
onClick={() => closeHamburger()}
|
||||
>Clone My Voice!</Link>
|
||||
|
||||
{/* DROPDOWN: CREATE */}
|
||||
|
||||
<div className="navbar-item has-dropdown is-hoverable">
|
||||
<Link to={FrontendUrlConfig.indexPage()}
|
||||
className="navbar-link"
|
||||
onClick={() => closeHamburger()}
|
||||
>{t('coreUi.topNav.create')}</Link>
|
||||
|
||||
<div className="navbar-dropdown is-boxed">
|
||||
{/* NB: There's an "is-active" class that looks nice. */}
|
||||
|
||||
<Link to="/"
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
>TTS</Link>
|
||||
|
||||
<Link to="/video"
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
>{t('coreUi.topNav.video')}</Link>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* DROPDOWN: COMMUNITY */}
|
||||
|
||||
<div className="navbar-item has-dropdown is-hoverable">
|
||||
<Link to={myDataLink}
|
||||
className="navbar-link"
|
||||
onClick={() => closeHamburger()}
|
||||
>{t('coreUi.topNav.community')}</Link>
|
||||
|
||||
<div className="navbar-dropdown is-boxed">
|
||||
{/* NB: There's an "is-active" class that looks nice. */}
|
||||
|
||||
<Link to="/contribute"
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faUpload} /> {t('coreUi.topNav.contributeUpload')}</Link>
|
||||
|
||||
<Link to="/leaderboard"
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faTrophy} /> {t('coreUi.topNav.leaderboard')}</Link>
|
||||
|
||||
<Link to={FrontendUrlConfig.patronsPage()}
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faPatreon}/> {t('coreUi.topNav.patrons')}</Link>
|
||||
|
||||
<Link to="/firehose"
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faList} /> {t('coreUi.topNav.feed')}</Link>
|
||||
|
||||
<hr className="navbar-divider" />
|
||||
|
||||
<Link to={myDataLink}
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faUser} /> {t('coreUi.topNav.myData')}</Link>
|
||||
|
||||
<hr className="navbar-divider" />
|
||||
|
||||
<Link to={FrontendUrlConfig.aboutUsPage()}
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faGrinBeamSweat} /> {t('coreUi.topNav.aboutUs')}</Link>
|
||||
|
||||
<Link to={FrontendUrlConfig.termsPage()}
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
><FontAwesomeIcon icon={faGavel} /> {t('coreUi.topNav.terms')}</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href={FrontendUrlConfig.developerDocs()}
|
||||
className="navbar-item"
|
||||
onClick={() => closeHamburger()}
|
||||
>{t('coreUi.topNav.developers')}</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div className="navbar-end">
|
||||
<div className="navbar-item">
|
||||
<div className="field is-grouped">
|
||||
<p className="control">
|
||||
<MigrationTopNavSession
|
||||
sessionWrapper={props.sessionWrapper}
|
||||
enableAlpha={true}
|
||||
querySessionAction={props.querySessionCallback}
|
||||
closeHamburgerAction={() => closeHamburger()}
|
||||
/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
||||
Reference in new issue
Block a user