From 1c532c76f5e3c6c0dcfa38d005b4eff245e9dbc5 Mon Sep 17 00:00:00 2001
From: nsfisis <nsfisis@gmail.com>
Date: Sun, 11 Aug 2024 15:59:56 +0900
Subject: feat(frontend): improve dashboard styling

---
 frontend/app/routes/dashboard.tsx | 81 +++++++++++++++++++++------------------
 1 file changed, 44 insertions(+), 37 deletions(-)

(limited to 'frontend/app/routes/dashboard.tsx')

diff --git a/frontend/app/routes/dashboard.tsx b/frontend/app/routes/dashboard.tsx
index 37dafff..6b242c4 100644
--- a/frontend/app/routes/dashboard.tsx
+++ b/frontend/app/routes/dashboard.tsx
@@ -1,8 +1,10 @@
 import type { LoaderFunctionArgs, MetaFunction } from "@remix-run/node";
 import { redirect } from "@remix-run/node";
-import { Form, Link, useLoaderData } from "@remix-run/react";
+import { Form, useLoaderData } from "@remix-run/react";
 import { apiGetGames } from "../.server/api/client";
 import { ensureUserLoggedIn } from "../.server/auth";
+import BorderedContainer from "../components/BorderedContainer";
+import NavigateLink from "../components/NavigateLink";
 
 export const meta: MetaFunction = () => [
 	{ title: "Dashboard | iOSDC Japan 2024 Albatross.swift" },
@@ -28,48 +30,53 @@ export default function Dashboard() {
 	const { user, games } = useLoaderData<typeof loader>()!;
 
 	return (
-		<div className="min-h-screen p-8">
-			<div className="p-6 rounded shadow-md max-w-4xl mx-auto">
-				<h1 className="text-3xl font-bold mb-4">{user.username}</h1>
-				<h2 className="text-2xl font-semibold mb-2">User</h2>
-				<div className="mb-6">
-					<ul className="list-disc list-inside">
-						<li>Name: {user.display_name}</li>
-					</ul>
-				</div>
-				<h2 className="text-2xl font-semibold mb-2">Games</h2>
-				<div>
-					<ul className="list-disc list-inside">
+		<div className="p-6 bg-gray-100 min-h-screen flex flex-col items-center">
+			<h1 className="text-2xl font-bold mb-4 text-gray-800">
+				<span>{user.display_name}</span>
+				<span className="text-gray-500 ml-2">@{user.username}</span>
+			</h1>
+			<h2 className="text-xl font-semibold mb-4 text-gray-700">試合</h2>
+			<BorderedContainer>
+				<div className="px-4">
+					<ul className="divide-y">
 						{games.map((game) => (
-							<li key={game.game_id}>
-								{game.display_name}
-								{game.game_type === "multiplayer" ? " (Multiplayer)" : " (1v1)"}
-								{game.state === "closed" || game.state === "finished" ? (
-									<span className="inline-block px-6 py-2 text-gray-400 bg-gray-200 cursor-not-allowed rounded">
-										Entry
+							<li
+								key={game.game_id}
+								className="flex justify-between items-center py-3 gap-3"
+							>
+								<div>
+									<span className="font-medium text-gray-800">
+										{game.display_name}
 									</span>
-								) : (
-									<Link
-										to={`/golf/${game.game_id}/play`}
-										className="inline-block px-6 py-2 text-white bg-blue-500 hover:bg-blue-700 rounded"
-									>
-										Entry
-									</Link>
-								)}
+									<span className="text-sm text-gray-500 ml-2">
+										{game.game_type === "multiplayer" ? " (マルチ)" : " (1v1)"}
+									</span>
+								</div>
+								<span>
+									{game.state === "closed" || game.state === "finished" ? (
+										<span className="text-lg text-gray-400 bg-gray-200 px-4 py-2 rounded">
+											入室
+										</span>
+									) : (
+										<NavigateLink to={`/golf/${game.game_id}/play`}>
+											入室
+										</NavigateLink>
+									)}
+								</span>
 							</li>
 						))}
 					</ul>
 				</div>
-				<div>
-					<Form method="post" action="/logout">
-						<button
-							className="mt-6 px-6 py-2 text-white bg-red-500 hover:bg-red-700 rounded"
-							type="submit"
-						>
-							Logout
-						</button>
-					</Form>
-				</div>
+			</BorderedContainer>
+			<div className="mt-6">
+				<Form method="post" action="/logout">
+					<button
+						type="submit"
+						className="px-4 py-2 bg-red-500 text-white rounded transition duration-300 hover:bg-red-700 focus:ring focus:ring-red-400 focus:outline-none"
+					>
+						ログアウト
+					</button>
+				</Form>
 			</div>
 		</div>
 	);
-- 
cgit v1.3.1

