From a46d15467eea635ac93f9aafc483d89e8ff37582 Mon Sep 17 00:00:00 2001 From: miteruzo Date: Wed, 23 Jul 2025 03:28:40 +0900 Subject: [PATCH] =?UTF-8?q?#23=20=E3=83=90=E3=82=B0=E3=81=AE=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=81=8A=E3=82=88=E3=81=B3=E3=83=AA=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=AF=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/ErrorScreen.tsx | 12 +++--- frontend/src/components/TopNav.tsx | 53 +++++++++---------------- frontend/src/components/TopNavUser.tsx | 30 ++++++++++++++ 3 files changed, 54 insertions(+), 41 deletions(-) create mode 100644 frontend/src/components/TopNavUser.tsx 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 || '名もなきニジラー'} + + ) +}