This commit is contained in:
+22
-24
@@ -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 />
|
||||||
</>)
|
</>)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 ()
|
||||||
|
|||||||
@@ -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>)
|
||||||
|
|||||||
@@ -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>)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user