Fix header styles
This commit is contained in:
parent
4c50360476
commit
c01a945f91
2 changed files with 28 additions and 83 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
#Header {
|
.header {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
margin-bottom: $unit;
|
margin-bottom: $unit;
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
background: var(--placeholder-bg);
|
background: var(--placeholder-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#DropdownWrapper {
|
.dropdownWrapper {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding-bottom: $unit;
|
padding-bottom: $unit;
|
||||||
|
|
||||||
|
|
@ -32,8 +32,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
// padding-right: $unit-4x;
|
|
||||||
|
|
||||||
.Button {
|
.Button {
|
||||||
background: var(--button-bg-hover);
|
background: var(--button-bg-hover);
|
||||||
color: var(--button-text-hover);
|
color: var(--button-text-hover);
|
||||||
|
|
|
||||||
|
|
@ -10,25 +10,23 @@ import Link from 'next/link'
|
||||||
import { accountState, initialAccountState } from '~utils/accountState'
|
import { accountState, initialAccountState } from '~utils/accountState'
|
||||||
import { appState, initialAppState } from '~utils/appState'
|
import { appState, initialAppState } from '~utils/appState'
|
||||||
import { getLocalId } from '~utils/localId'
|
import { getLocalId } from '~utils/localId'
|
||||||
import { retrieveLocaleCookies } from '~utils/retrieveCookies'
|
|
||||||
import { setEditKey, storeEditKey } from '~utils/userToken'
|
import { setEditKey, storeEditKey } from '~utils/userToken'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
DropdownMenu,
|
DropdownMenu,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
DropdownMenuContent,
|
DropdownMenuContent,
|
||||||
DropdownMenuGroup,
|
|
||||||
DropdownMenuItem,
|
|
||||||
DropdownMenuSeparator,
|
DropdownMenuSeparator,
|
||||||
DropdownMenuLabel,
|
|
||||||
} from '~components/common/DropdownMenuContent'
|
} from '~components/common/DropdownMenuContent'
|
||||||
|
import DropdownMenuGroup from '~components/common/DropdownMenuGroup'
|
||||||
|
import DropdownMenuLabel from '~components/common/DropdownMenuLabel'
|
||||||
|
import DropdownMenuItem from '~components/common/DropdownMenuItem'
|
||||||
|
import LanguageSwitch from '~components/LanguageSwitch'
|
||||||
import LoginModal from '~components/auth/LoginModal'
|
import LoginModal from '~components/auth/LoginModal'
|
||||||
import SignupModal from '~components/auth/SignupModal'
|
import SignupModal from '~components/auth/SignupModal'
|
||||||
import AccountModal from '~components/auth/AccountModal'
|
import AccountModal from '~components/auth/AccountModal'
|
||||||
import Toast from '~components/common/Toast'
|
|
||||||
import Button from '~components/common/Button'
|
import Button from '~components/common/Button'
|
||||||
import Tooltip from '~components/common/Tooltip'
|
import Tooltip from '~components/common/Tooltip'
|
||||||
import * as Switch from '@radix-ui/react-switch'
|
|
||||||
|
|
||||||
import ChevronIcon from '~public/icons/Chevron.svg'
|
import ChevronIcon from '~public/icons/Chevron.svg'
|
||||||
import MenuIcon from '~public/icons/Menu.svg'
|
import MenuIcon from '~public/icons/Menu.svg'
|
||||||
|
|
@ -44,7 +42,6 @@ const Header = () => {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const locale =
|
const locale =
|
||||||
router.locale && ['en', 'ja'].includes(router.locale) ? router.locale : 'en'
|
router.locale && ['en', 'ja'].includes(router.locale) ? router.locale : 'en'
|
||||||
const localeData = retrieveLocaleCookies()
|
|
||||||
|
|
||||||
// State management
|
// State management
|
||||||
const [remixToastOpen, setRemixToastOpen] = useState(false)
|
const [remixToastOpen, setRemixToastOpen] = useState(false)
|
||||||
|
|
@ -53,7 +50,6 @@ const Header = () => {
|
||||||
const [settingsModalOpen, setSettingsModalOpen] = useState(false)
|
const [settingsModalOpen, setSettingsModalOpen] = useState(false)
|
||||||
const [leftMenuOpen, setLeftMenuOpen] = useState(false)
|
const [leftMenuOpen, setLeftMenuOpen] = useState(false)
|
||||||
const [rightMenuOpen, setRightMenuOpen] = useState(false)
|
const [rightMenuOpen, setRightMenuOpen] = useState(false)
|
||||||
const [languageChecked, setLanguageChecked] = useState(false)
|
|
||||||
|
|
||||||
const [name, setName] = useState('')
|
const [name, setName] = useState('')
|
||||||
const [originalName, setOriginalName] = useState('')
|
const [originalName, setOriginalName] = useState('')
|
||||||
|
|
@ -71,11 +67,6 @@ const Header = () => {
|
||||||
|
|
||||||
useEffect(() => () => unsubscribe(), [])
|
useEffect(() => () => unsubscribe(), [])
|
||||||
|
|
||||||
// Hooks
|
|
||||||
useEffect(() => {
|
|
||||||
setLanguageChecked(localeData === 'ja' ? true : false)
|
|
||||||
}, [localeData])
|
|
||||||
|
|
||||||
// Methods: Event handlers (Buttons)
|
// Methods: Event handlers (Buttons)
|
||||||
function handleLeftMenuButtonClicked() {
|
function handleLeftMenuButtonClicked() {
|
||||||
setLeftMenuOpen(!leftMenuOpen)
|
setLeftMenuOpen(!leftMenuOpen)
|
||||||
|
|
@ -102,15 +93,6 @@ const Header = () => {
|
||||||
setRightMenuOpen(false)
|
setRightMenuOpen(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methods: Event handlers (Remix toasts)
|
|
||||||
function handleRemixToastOpenChanged(open: boolean) {
|
|
||||||
setRemixToastOpen(open)
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleRemixToastCloseClicked() {
|
|
||||||
setRemixToastOpen(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methods: Actions
|
// Methods: Actions
|
||||||
function handleNewTeam(event: React.MouseEvent) {
|
function handleNewTeam(event: React.MouseEvent) {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
|
@ -118,15 +100,6 @@ const Header = () => {
|
||||||
closeRightMenu()
|
closeRightMenu()
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeLanguage(value: boolean) {
|
|
||||||
const language = value ? 'ja' : 'en'
|
|
||||||
const expiresAt = new Date()
|
|
||||||
expiresAt.setDate(expiresAt.getDate() + 120)
|
|
||||||
|
|
||||||
setCookie('NEXT_LOCALE', language, { path: '/', expires: expiresAt })
|
|
||||||
router.push(router.asPath, undefined, { locale: language })
|
|
||||||
}
|
|
||||||
|
|
||||||
function logout() {
|
function logout() {
|
||||||
// Close menu
|
// Close menu
|
||||||
closeRightMenu()
|
closeRightMenu()
|
||||||
|
|
@ -200,24 +173,6 @@ const Header = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const remixToast = () => {
|
|
||||||
return (
|
|
||||||
<Toast
|
|
||||||
altText={t('toasts.remixed', { title: originalName })}
|
|
||||||
open={remixToastOpen}
|
|
||||||
duration={2400}
|
|
||||||
type="foreground"
|
|
||||||
content={
|
|
||||||
<Trans i18nKey="toasts.remixed">
|
|
||||||
You remixed <strong>{{ title: originalName }}</strong>
|
|
||||||
</Trans>
|
|
||||||
}
|
|
||||||
onOpenChange={handleRemixToastOpenChanged}
|
|
||||||
onCloseClick={handleRemixToastCloseClicked}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rendering: Modals
|
// Rendering: Modals
|
||||||
const settingsModal = () => {
|
const settingsModal = () => {
|
||||||
const user = accountState.account.user
|
const user = accountState.account.user
|
||||||
|
|
@ -251,16 +206,16 @@ const Header = () => {
|
||||||
const left = () => {
|
const left = () => {
|
||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<div id="DropdownWrapper">
|
<div className={styles.dropdownWrapper}>
|
||||||
<DropdownMenu
|
<DropdownMenu
|
||||||
open={leftMenuOpen}
|
open={leftMenuOpen}
|
||||||
onOpenChange={handleLeftMenuOpenChange}
|
onOpenChange={handleLeftMenuOpenChange}
|
||||||
>
|
>
|
||||||
<DropdownMenuTrigger asChild>
|
<DropdownMenuTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
leftAccessoryIcon={<MenuIcon />}
|
active={leftMenuOpen}
|
||||||
className={classNames({ Active: leftMenuOpen })}
|
|
||||||
blended={true}
|
blended={true}
|
||||||
|
leftAccessoryIcon={<MenuIcon />}
|
||||||
onClick={handleLeftMenuButtonClicked}
|
onClick={handleLeftMenuButtonClicked}
|
||||||
/>
|
/>
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
|
|
@ -304,8 +259,8 @@ const Header = () => {
|
||||||
<>
|
<>
|
||||||
{accountState.account.authorized && accountState.account.user ? (
|
{accountState.account.authorized && accountState.account.user ? (
|
||||||
<>
|
<>
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<Link
|
<Link
|
||||||
href={`/${accountState.account.user.username}` || ''}
|
href={`/${accountState.account.user.username}` || ''}
|
||||||
passHref
|
passHref
|
||||||
|
|
@ -313,7 +268,7 @@ const Header = () => {
|
||||||
<span>{t('menu.profile')}</span>
|
<span>{t('menu.profile')}</span>
|
||||||
</Link>
|
</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<Link href={`/saved` || ''}>{t('menu.saved')}</Link>
|
<Link href={`/saved` || ''}>{t('menu.saved')}</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
|
|
@ -321,19 +276,19 @@ const Header = () => {
|
||||||
) : (
|
) : (
|
||||||
''
|
''
|
||||||
)}
|
)}
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<Link href="/teams">{t('menu.teams')}</Link>
|
<Link href="/teams">{t('menu.teams')}</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem className="MenuItem">
|
<DropdownMenuItem>
|
||||||
<div>
|
<div>
|
||||||
<span>{t('menu.guides')}</span>
|
<span>{t('menu.guides')}</span>
|
||||||
<i className="tag">{t('coming_soon')}</i>
|
<i className="tag">{t('coming_soon')}</i>
|
||||||
</div>
|
</div>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<a
|
<a
|
||||||
href={locale == 'ja' ? '/ja/about' : '/about'}
|
href={locale == 'ja' ? '/ja/about' : '/about'}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
@ -342,7 +297,7 @@ const Header = () => {
|
||||||
{t('about.segmented_control.about')}
|
{t('about.segmented_control.about')}
|
||||||
</a>
|
</a>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<a
|
<a
|
||||||
href={locale == 'ja' ? '/ja/updates' : '/updates'}
|
href={locale == 'ja' ? '/ja/updates' : '/updates'}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
@ -351,7 +306,7 @@ const Header = () => {
|
||||||
{t('about.segmented_control.updates')}
|
{t('about.segmented_control.updates')}
|
||||||
</a>
|
</a>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeLeftMenu}>
|
<DropdownMenuItem onClick={closeLeftMenu}>
|
||||||
<a
|
<a
|
||||||
href={locale == 'ja' ? '/ja/roadmap' : '/roadmap'}
|
href={locale == 'ja' ? '/ja/roadmap' : '/roadmap'}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|
@ -372,25 +327,25 @@ const Header = () => {
|
||||||
if (account.authorized && account.user) {
|
if (account.authorized && account.user) {
|
||||||
items = (
|
items = (
|
||||||
<>
|
<>
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuLabel className="MenuLabel">
|
<DropdownMenuLabel>
|
||||||
{account.user ? `@${account.user.username}` : t('no_user')}
|
{account.user ? `@${account.user.username}` : t('no_user')}
|
||||||
</DropdownMenuLabel>
|
</DropdownMenuLabel>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={closeRightMenu}>
|
<DropdownMenuItem onClick={closeRightMenu}>
|
||||||
<Link href={`/${account.user.username}` || ''} passHref>
|
<Link href={`/${account.user.username}` || ''} passHref>
|
||||||
<span>{t('menu.profile')}</span>
|
<span>{t('menu.profile')}</span>
|
||||||
</Link>
|
</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
className="MenuItem"
|
className="MenuItem"
|
||||||
onClick={() => setSettingsModalOpen(true)}
|
onClick={() => setSettingsModalOpen(true)}
|
||||||
>
|
>
|
||||||
<span>{t('menu.settings')}</span>
|
<span>{t('menu.settings')}</span>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem className="MenuItem" onClick={logout}>
|
<DropdownMenuItem onClick={logout}>
|
||||||
<span>{t('menu.logout')}</span>
|
<span>{t('menu.logout')}</span>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
|
|
@ -399,18 +354,10 @@ const Header = () => {
|
||||||
} else {
|
} else {
|
||||||
items = (
|
items = (
|
||||||
<>
|
<>
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuItem className="MenuItem language">
|
<DropdownMenuItem className="language">
|
||||||
<span>{t('menu.language')}</span>
|
<span>{t('menu.language')}</span>
|
||||||
<Switch.Root
|
<LanguageSwitch />
|
||||||
className="Switch"
|
|
||||||
onCheckedChange={changeLanguage}
|
|
||||||
checked={languageChecked}
|
|
||||||
>
|
|
||||||
<Switch.Thumb className="Thumb" />
|
|
||||||
<span className="left">JP</span>
|
|
||||||
<span className="right">EN</span>
|
|
||||||
</Switch.Root>
|
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
<DropdownMenuGroup className="MenuGroup">
|
<DropdownMenuGroup className="MenuGroup">
|
||||||
|
|
@ -435,7 +382,7 @@ const Header = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<nav id="Header">
|
<nav className={styles.header}>
|
||||||
{left()}
|
{left()}
|
||||||
{right()}
|
{right()}
|
||||||
{settingsModal()}
|
{settingsModal()}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue