This commit is contained in:
2025-07-19 23:26:18 +09:00
parent 196d673324
commit 1a965146dc
6 changed files with 43 additions and 36 deletions
+22 -24
View File
@@ -1,7 +1,7 @@
import axios from 'axios' import axios from 'axios'
import toCamel from 'camelcase-keys' import toCamel from 'camelcase-keys'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom' import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'
import TopNav from '@/components/TopNav' import TopNav from '@/components/TopNav'
import { Toaster } from '@/components/ui/toaster' import { Toaster } from '@/components/ui/toaster'
@@ -70,29 +70,27 @@ export default () => {
return ( return (
<> <>
<Router> <div className="flex flex-col h-screen w-screen">
<div className="flex flex-col h-screen w-screen"> <TopNav user={user} />
<TopNav user={user} /> <BrowserRouter>
<div className="flex flex-1"> <Routes>
<Routes> <Route path="/" element={<Navigate to="/posts" replace />} />
<Route path="/" element={<Navigate to="/posts" replace />} /> <Route path="/posts" element={<PostListPage />} />
<Route path="/posts" element={<PostListPage />} /> <Route path="/posts/new" element={<PostNewPage user={user} />} />
<Route path="/posts/new" element={<PostNewPage user={user} />} /> <Route path="/posts/:id" element={<PostDetailPage user={user} />} />
<Route path="/posts/:id" element={<PostDetailPage user={user} />} /> <Route path="/tags/nico" element={<NicoTagListPage user={user} />} />
<Route path="/tags/nico" element={<NicoTagListPage user={user} />} /> <Route path="/wiki" element={<WikiSearchPage />} />
<Route path="/wiki" element={<WikiSearchPage />} /> <Route path="/wiki/:title" element={<WikiDetailPage />} />
<Route path="/wiki/:title" element={<WikiDetailPage />} /> <Route path="/wiki/new" element={<WikiNewPage user={user} />} />
<Route path="/wiki/new" element={<WikiNewPage user={user} />} /> <Route path="/wiki/:id/edit" element={<WikiEditPage user={user} />} />
<Route path="/wiki/:id/edit" element={<WikiEditPage user={user} />} /> <Route path="/wiki/:id/diff" element={<WikiDiffPage />} />
<Route path="/wiki/:id/diff" element={<WikiDiffPage />} /> <Route path="/wiki/changes" element={<WikiHistoryPage />} />
<Route path="/wiki/changes" element={<WikiHistoryPage />} /> <Route path="/users/settings" element={<SettingPage user={user} setUser={setUser} />} />
<Route path="/users/settings" element={<SettingPage user={user} setUser={setUser} />} /> <Route path="/settings" element={<Navigate to="/users/settings" replace />} />
<Route path="/settings" element={<Navigate to="/users/settings" replace />} /> <Route path="*" element={<NotFound />} />
<Route path="*" element={<NotFound />} /> </Routes>
</Routes> </BrowserRouter>
</div> </div>
</div>
</Router>
<Toaster /> <Toaster />
</>) </>)
} }
+1 -1
View File
@@ -64,7 +64,7 @@ export default ({ posts }: Props) => {
</li>))) : [])} </li>))) : [])}
</ul> </ul>
<SectionTitle></SectionTitle> <SectionTitle></SectionTitle>
{posts.length && ( {posts.length > 0 && (
<a href="#" <a href="#"
onClick={ev => { onClick={ev => {
ev.preventDefault () ev.preventDefault ()
+1 -2
View File
@@ -166,8 +166,7 @@ export default ({ user }: Props) => {
return ( return (
<div className={className}> <div className={className}>
<Link to="/posts" className={subClass}></Link> <Link to="/posts" className={subClass}></Link>
{['admin', 'member'].some (r => user?.role === r) && ( <Link to="/posts/new" className={subClass}>稿</Link>
<Link to="/posts/new" className={subClass}>稿</Link>)}
<Link to="/wiki/ヘルプ:広場" className={subClass}></Link> <Link to="/wiki/ヘルプ:広場" className={subClass}></Link>
</div>) </div>)
case Menu.Tag: case Menu.Tag:
@@ -4,6 +4,6 @@ type Props = { children: React.ReactNode }
export default ({ children }: Props) => ( export default ({ children }: Props) => (
<div className="w-64 bg-gray-100 p-4 border-r border-gray-200 h-full"> <div className="p-4 w-full md:w-64 md:h-full">
{children} {children}
</div>) </div>)
+9 -4
View File
@@ -24,8 +24,8 @@ type Props = { user: User | null }
export default ({ user }: Props) => { export default ({ user }: Props) => {
const { id } = useParams () const { id } = useParams ()
const [post, setPost] = useState<Post | null> (null)
const [editing, setEditing] = useState (true) const [editing, setEditing] = useState (true)
const [post, setPost] = useState<Post | null> (null)
const [status, setStatus] = useState (200) const [status, setStatus] = useState (200)
const changeViewedFlg = async () => { const changeViewedFlg = async () => {
@@ -92,13 +92,15 @@ export default ({ user }: Props) => {
: 'bg-gray-500 hover:bg-gray-600') : 'bg-gray-500 hover:bg-gray-600')
return ( return (
<> <div className="md:flex md:flex-1">
<Helmet> <Helmet>
{(post?.thumbnail || post?.thumbnailBase) && ( {(post?.thumbnail || post?.thumbnailBase) && (
<meta name="thumbnail" content={post.thumbnail || post.thumbnailBase} />)} <meta name="thumbnail" content={post.thumbnail || post.thumbnailBase} />)}
{post && <title>{`${ post.title || post.url } | ${ SITE_TITLE }`}</title>} {post && <title>{`${ post.title || post.url } | ${ SITE_TITLE }`}</title>}
</Helmet> </Helmet>
<TagDetailSidebar post={post} /> <div className="hidden md:block">
<TagDetailSidebar post={post} />
</div>
<MainArea> <MainArea>
{post {post
? ( ? (
@@ -126,5 +128,8 @@ export default ({ user }: Props) => {
</>) </>)
: 'Loading...'} : 'Loading...'}
</MainArea> </MainArea>
</>) <div className="md:hidden">
<TagDetailSidebar post={post} />
</div>
</div>)
} }
+9 -4
View File
@@ -77,7 +77,7 @@ export default () => {
}, [location.search]) }, [location.search])
return ( return (
<> <div className="md:flex md:flex-1">
<Helmet> <Helmet>
<title> <title>
{tags.length {tags.length
@@ -85,13 +85,15 @@ export default () => {
: `${ SITE_TITLE } 〜 ぼざろクリーチャーシリーズ綜合リンク集サイト`} : `${ SITE_TITLE } 〜 ぼざろクリーチャーシリーズ綜合リンク集サイト`}
</title> </title>
</Helmet> </Helmet>
<TagSidebar posts={posts.slice (0, 20)} /> <div className="hidden md:block">
<TagSidebar posts={posts.slice (0, 20)} />
</div>
<MainArea> <MainArea>
<TabGroup> <TabGroup>
<Tab name="広場"> <Tab name="広場">
{posts.length {posts.length
? ( ? (
<div className="flex flex-wrap gap-4 p-4"> <div className="flex flex-wrap gap-4 gap-y-8 p-4 justify-between">
{posts.map (post => ( {posts.map (post => (
<Link to={`/posts/${ post.id }`} <Link to={`/posts/${ post.id }`}
key={post.id} key={post.id}
@@ -115,5 +117,8 @@ export default () => {
</Tab>)} </Tab>)}
</TabGroup> </TabGroup>
</MainArea> </MainArea>
</>) <div className="md:hidden">
<TagSidebar posts={posts.slice (0, 20)} />
</div>
</div>)
} }