ぼざクリ タグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

48 lines
1.5 KiB

  1. import React, { useEffect, useState } from 'react'
  2. import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'
  3. import HomePage from './pages/HomePage'
  4. import TagPage from './pages/TagPage'
  5. import TopNav from './components/TopNav'
  6. import TagSidebar from './components/TagSidebar'
  7. import PostPage from './pages/PostPage'
  8. import PostDetailPage from './pages/PostDetailPage'
  9. type Tag = { id: number
  10. name: string
  11. category: string }
  12. type Post = { id: number
  13. url: string
  14. title: string
  15. thumbnail: string
  16. tags: Tag[] }
  17. const App = () => {
  18. const [posts, setPosts] = useState<Post[]> ([])
  19. useEffect (() => {
  20. alert ('このサイトはまだ作りかけです!!!!\n出てけ!!!!!!!!!!!!!!!!!!!!')
  21. }, [])
  22. return (
  23. <Router>
  24. <div className="flex flex-col h-screen w-screen">
  25. <TopNav />
  26. <div className="flex flex-1">
  27. <TagSidebar posts={posts} setPosts={setPosts} />
  28. <main className="flex-1 overflow-y-auto p-4">
  29. <Routes>
  30. <Route path="/posts/:id" element={<PostDetailPage posts={posts} setPosts={setPosts} />} />
  31. <Route path="/tags/:tag" element={<TagPage />} />
  32. <Route path="*" element={<PostPage posts={posts} setPosts={setPosts} />} />
  33. </Routes>
  34. </main>
  35. </div>
  36. </div>
  37. </Router>)
  38. }
  39. export default App