diff --git a/frontend/src/components/ErrorScreen.tsx b/frontend/src/components/ErrorScreen.tsx index c5f82ad..03ae2e0 100644 --- a/frontend/src/components/ErrorScreen.tsx +++ b/frontend/src/components/ErrorScreen.tsx @@ -31,7 +31,7 @@ export default ({ status }: Props) => { style.innerHTML = ` @font-face { - font-family: 'MyFont'; + font-family: 'Nikumaru'; src: url(${ nikumaru }) format('opentype'); }` document.head.appendChild (style) @@ -42,15 +42,15 @@ export default ({ status }: Props) => { {title} | {SITE_TITLE} -
+ space-y-2 sm:space-y-4 md:space-y-6 text-center flex flex-col justify-center items-center" + style={{ fontFamily: 'Nikumaru' }}>

{status}

-
+

{leftMsg}

- 逃げたギター + 逃げたギター

{rightMsg}

{message}

diff --git a/frontend/src/components/TopNav.tsx b/frontend/src/components/TopNav.tsx index 7ab5342..15b0c97 100644 --- a/frontend/src/components/TopNav.tsx +++ b/frontend/src/components/TopNav.tsx @@ -1,9 +1,10 @@ import axios from 'axios' import toCamel from 'camelcase-keys' import { useState, useEffect } from 'react' -import { Link, useLocation, useNavigate } from 'react-router-dom' +import { Link, useLocation } from 'react-router-dom' import Separator from '@/components/MenuSeparator' +import TopNavUser from '@/components/TopNavUser' import { API_BASE_URL } from '@/config' import { WikiIdBus } from '@/lib/eventBus/WikiIdBus' import { cn } from '@/lib/utils' @@ -15,7 +16,6 @@ type Props = { user: User | null } export default ({ user }: Props) => { const location = useLocation () - const navigate = useNavigate () const [menuOpen, setMenuOpen] = useState (false) const [openItemIdx, setOpenItemIdx] = useState (-1) @@ -57,6 +57,7 @@ export default ({ user }: Props) => { }, []) useEffect (() => { + setMenuOpen (false) setOpenItemIdx (menu.findIndex (item => ( location.pathname.startsWith (item.base || item.to)))) }, [location]) @@ -107,14 +108,7 @@ export default ({ user }: Props) => { ))}
- {user && ( -
- - {user.name || '名もなきニジラー'} - -
)} + { - ev.preventDefault () - if (i === openItemIdx) - { - setMenuOpen (false) - navigate (item.to) - } - else - setOpenItemIdx (i) - }}> + { + if (i !== openItemIdx) + { + ev.preventDefault () + setOpenItemIdx (i) + } + }}> {item.name} - + {i === openItemIdx && ( item.subMenu .filter (subItem => subItem.visible ?? true) @@ -172,16 +164,7 @@ export default ({ user }: Props) => { {subItem.name} )))} ))} - {user && ( - <> - - - {user.name || '名もなきニジラー'} - - )} +
) diff --git a/frontend/src/components/TopNavUser.tsx b/frontend/src/components/TopNavUser.tsx new file mode 100644 index 0000000..765ad5f --- /dev/null +++ b/frontend/src/components/TopNavUser.tsx @@ -0,0 +1,30 @@ +import { Link } from 'react-router-dom' + +import Separator from '@/components/MenuSeparator' +import { cn } from '@/lib/utils' + +import type { User } from '@/types' + +type Props = { user: User | null, + sp?: boolean } + + +export default ({ user, sp }: Props) => { + if (!(user)) + return + + const className = cn ((sp + ? 'md:hidden w-full min-h-[40px] flex items-center pl-8' + : 'hidden md:block ml-auto pr-4'), + 'font-bold text-red-600 hover:text-red-400', + 'dark:text-yellow-400 dark:hover:text-yellow-200') + + return ( + <> + {sp && } + + {user.name || '名もなきニジラー'} + + ) +}