generated from lucien/api-template
add: improved UI by adding CSS files
This commit is contained in:
parent
1656e95557
commit
42e6acd9ca
19 changed files with 543 additions and 197 deletions
|
@ -1,9 +1,12 @@
|
|||
import { useState, useEffect } from "react"
|
||||
import { Link } from "react-router-dom"
|
||||
import { Channels, RecentChannels, User, Messages } from "../types"
|
||||
import TopBar from "../components/TopBar"
|
||||
import MessageComponent from "../components/MessageComponent"
|
||||
import axios from "axios"
|
||||
|
||||
import "../styles/Home.css"
|
||||
|
||||
export default function Home() {
|
||||
const [user, setUser] = useState<User>();
|
||||
const [channels, setChannels] = useState<RecentChannels>();
|
||||
|
@ -80,59 +83,66 @@ export default function Home() {
|
|||
}, [search])
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Home</h1>
|
||||
{user ? (
|
||||
<div>
|
||||
<p>Welcome {user.username}</p>
|
||||
<button onClick={() => {
|
||||
localStorage.removeItem("token")
|
||||
window.location.reload()
|
||||
}}>Logout</button>
|
||||
<Link to="/create-channel">Create Channel</Link>
|
||||
<div className="home">
|
||||
<TopBar user={user} />
|
||||
<div className="home-header">
|
||||
<div className="home-header-text">
|
||||
<h2>Welcome to Tanuki's forum !</h2>
|
||||
<p>
|
||||
I don't know what to say, but I hope you will enjoy your stay here.
|
||||
</p>
|
||||
</div>
|
||||
) : (
|
||||
<div>
|
||||
<Link to="/login">Login</Link>
|
||||
<Link to="/register">Register</Link>
|
||||
<img src="osaka_arch.png" alt="osaka" className="osaka"/>
|
||||
</div>
|
||||
<div className="main-content">
|
||||
<div className="home-messages">
|
||||
<h2>Last messages</h2>
|
||||
<div className="messages-list">
|
||||
{messages?.map((message) => (
|
||||
<MessageComponent
|
||||
key={message.id}
|
||||
message={message}
|
||||
user={user}
|
||||
channel={undefined}
|
||||
deleteMessage={undefined}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<h2>Recent active channels</h2>
|
||||
<ul>
|
||||
{channels?.map((channel) => (
|
||||
<li key={channel.id}>
|
||||
<Link to={`/c/${channel.name}`}>{channel.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<h2>Search channels</h2>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Search channels"
|
||||
value={search}
|
||||
onChange={(e) => setSearch(e.target.value)}
|
||||
/>
|
||||
<ul>
|
||||
{searchedChannels?.map((channel) => (
|
||||
<li key={channel.id}>
|
||||
<Link to={`/c/${channel.name}`}>{channel.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<Link to={'/channels'}>All channels</Link>
|
||||
<h2>Last messages</h2>
|
||||
<ul>
|
||||
{messages?.map((message) => (
|
||||
<MessageComponent
|
||||
key={message.id}
|
||||
message={message}
|
||||
user={user}
|
||||
channel={undefined}
|
||||
deleteMessage={undefined}
|
||||
/>
|
||||
))}
|
||||
</ul>
|
||||
<img src="osaka_arch.png" alt="osaka" className="osaka"/>
|
||||
<div className="channels">
|
||||
<h2>Channels</h2>
|
||||
<Link to={'/channels'}>All channels</Link>
|
||||
{user && (
|
||||
<Link to={'/create-channel'}>Create channel</Link>
|
||||
)}
|
||||
<div className="channels-recent">
|
||||
<h3>Recent active channels</h3>
|
||||
<ul>
|
||||
{channels?.map((channel) => (
|
||||
<li key={channel.id}>
|
||||
<Link to={`/c/${channel.name}`}>{channel.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
<div className="channels-search">
|
||||
<h3>Search channels</h3>
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Search channels"
|
||||
value={search}
|
||||
onChange={(e) => setSearch(e.target.value)}
|
||||
/>
|
||||
<ul>
|
||||
{searchedChannels?.map((channel) => (
|
||||
<li key={channel.id}>
|
||||
<Link to={`/c/${channel.name}`}>{channel.name}</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue