diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-13 23:08:50 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-13 23:08:50 +0900 |
| commit | 470b7235b80d082009ad350e2b33ef6637209e02 (patch) | |
| tree | 60ffe938a4051255ea0d6b35001be50c28b76497 /frontend/app/components | |
| parent | 482c3a52a0fcc5870a7db4a190475caf61b211a3 (diff) | |
| parent | 6c30f383a65cb000d66a85cadc96253ce7061942 (diff) | |
| download | phperkaigi-2026-albatross-470b7235b80d082009ad350e2b33ef6637209e02.tar.gz phperkaigi-2026-albatross-470b7235b80d082009ad350e2b33ef6637209e02.tar.zst phperkaigi-2026-albatross-470b7235b80d082009ad350e2b33ef6637209e02.zip | |
Merge branch 'feat/frontend-rearchitecture'
Diffstat (limited to 'frontend/app/components')
| -rw-r--r-- | frontend/app/components/GolfPlayApps/GolfPlayAppGaming.tsx | 2 | ||||
| -rw-r--r-- | frontend/app/components/NavigateLink.tsx | 16 | ||||
| -rw-r--r-- | frontend/app/components/ProtectedRoute.tsx | 16 | ||||
| -rw-r--r-- | frontend/app/components/PublicOnlyRoute.tsx | 16 |
4 files changed, 45 insertions, 5 deletions
diff --git a/frontend/app/components/GolfPlayApps/GolfPlayAppGaming.tsx b/frontend/app/components/GolfPlayApps/GolfPlayAppGaming.tsx index 9eab91e..025e676 100644 --- a/frontend/app/components/GolfPlayApps/GolfPlayAppGaming.tsx +++ b/frontend/app/components/GolfPlayApps/GolfPlayAppGaming.tsx @@ -1,6 +1,6 @@ import { useAtomValue } from "jotai"; import React, { useRef, useState } from "react"; -import { Link } from "react-router"; +import { Link } from "wouter"; import { calcCodeSize, gamingLeftTimeSecondsAtom, diff --git a/frontend/app/components/NavigateLink.tsx b/frontend/app/components/NavigateLink.tsx index c4ee7aa..16c7858 100644 --- a/frontend/app/components/NavigateLink.tsx +++ b/frontend/app/components/NavigateLink.tsx @@ -1,10 +1,18 @@ -import { Link, LinkProps } from "react-router"; +import { Link } from "wouter"; -export default function NavigateLink(props: LinkProps) { +export default function NavigateLink({ + to, + children, +}: { + to: string; + children: React.ReactNode; +}) { return ( <Link - {...props} + to={to} className="text-lg text-white bg-sky-600 px-4 py-2 border-2 border-sky-50 rounded-sm transition duration-300 hover:bg-sky-500 focus:ring-3 focus:ring-sky-400 focus:outline-hidden" - /> + > + {children} + </Link> ); } diff --git a/frontend/app/components/ProtectedRoute.tsx b/frontend/app/components/ProtectedRoute.tsx new file mode 100644 index 0000000..3aeaebc --- /dev/null +++ b/frontend/app/components/ProtectedRoute.tsx @@ -0,0 +1,16 @@ +import { Redirect } from "wouter"; +import { useAuth } from "../hooks/useAuth"; + +export default function ProtectedRoute({ + children, +}: { + children: React.ReactNode; +}) { + const { isLoggedIn } = useAuth(); + + if (!isLoggedIn) { + return <Redirect to="/login" />; + } + + return <>{children}</>; +} diff --git a/frontend/app/components/PublicOnlyRoute.tsx b/frontend/app/components/PublicOnlyRoute.tsx new file mode 100644 index 0000000..2527918 --- /dev/null +++ b/frontend/app/components/PublicOnlyRoute.tsx @@ -0,0 +1,16 @@ +import { Redirect } from "wouter"; +import { useAuth } from "../hooks/useAuth"; + +export default function PublicOnlyRoute({ + children, +}: { + children: React.ReactNode; +}) { + const { isLoggedIn } = useAuth(); + + if (isLoggedIn) { + return <Redirect to="/dashboard" />; + } + + return <>{children}</>; +} |
