diff --git a/frontend/package.json b/frontend/package.json index a6bde70..1ba3cbd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,9 @@ "preview": "vite preview" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", + "@fortawesome/react-fontawesome": "^3.1.0", "@radix-ui/react-slot": "^1.0.2", "axios": "^1.5.1", "class-variance-authority": "^0.7.0", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2b7e0c4..41c8bf7 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -9,6 +9,7 @@ function App() { } /> }> } /> + } /> } /> diff --git a/frontend/src/components/ThemeToggle.tsx b/frontend/src/components/ThemeToggle.tsx index e717702..15cd38b 100644 --- a/frontend/src/components/ThemeToggle.tsx +++ b/frontend/src/components/ThemeToggle.tsx @@ -1,12 +1,26 @@ import { Moon, Sun } from "lucide-react"; -import { Button } from "./ui/button"; +import { Button, type ButtonProps } from "./ui/button"; import { useTheme } from "../providers/theme-provider"; -export function ThemeToggle() { +export function ThemeToggle({ + className, + size = "icon", + variant = "outline" +}: { + className?: string; + size?: ButtonProps["size"]; + variant?: ButtonProps["variant"]; +}) { const { theme, toggleTheme } = useTheme(); return ( - ); diff --git a/frontend/src/index.css b/frontend/src/index.css index b9fd8ea..db3dc32 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -9,7 +9,7 @@ --card-foreground: 0 0% 4%; --popover: 0 0% 100%; --popover-foreground: 0 0% 4%; - --primary: 0 0% 4%; + --primary: 180 1.2% 16.3%; --primary-foreground: 0 0% 98%; --secondary: 0 0% 96.1%; --secondary-foreground: 0 0% 9%; diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx index 97284ca..96e02d0 100644 --- a/frontend/src/pages/AdminPage.tsx +++ b/frontend/src/pages/AdminPage.tsx @@ -1,12 +1,15 @@ import { useEffect, useMemo, useState } from "react"; -import { useNavigate } from "react-router-dom"; +import { NavLink, useNavigate } from "react-router-dom"; import { io, Socket } from "socket.io-client"; import { toast } from "sonner"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faHouse, faBriefcase, faArrowRightFromBracket, faUser } from "@fortawesome/free-solid-svg-icons"; import { Button } from "../components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../components/ui/card"; import { ThemeToggle } from "../components/ThemeToggle"; import { useAuth } from "../providers/auth-provider"; import { apiClient } from "../api/client"; +import { cn } from "../lib/utils"; export function AdminPage() { const { user, token, logout } = useAuth(); @@ -48,66 +51,100 @@ export function AdminPage() { socket.emit("ping"); }; + const navigation = [ + { label: "Home", to: "/admin", icon: faHouse }, + { label: "Jobs", to: "/jobs", icon: faBriefcase } + ]; + return (
-
-
-
Yönetim Paneli
- {user?.username && Hoş geldin, {user.username}} -
-
- - -
-
- -
- - - Bağlantı - Backend'e bağlanıp basit ping/pong testi yapın. - - - -
-
Socket Mesajları
-
- {messages.length === 0 &&
Mesaj yok.
} - {messages.map((msg, idx) => ( -
- • {msg} -
- ))} +
+ - - - Durum - Auth & bağlantı bilgileri. - - -
- API URL - {socketUrl} -
-
- Kullanıcı - {user?.username ?? "-"} -
-
- Token - {token?.slice(0, 24) ?? "-"}... -
-
-
-
+
+
+ + + Bağlantı + Backend'e bağlanıp basit ping/pong testi yapın. + + + +
+
Socket Mesajları
+
+ {messages.length === 0 &&
Mesaj yok.
} + {messages.map((msg, idx) => ( +
+ • {msg} +
+ ))} +
+
+
+
+ + + + Durum + Auth & bağlantı bilgileri. + + +
+ API URL + {socketUrl} +
+
+ Kullanıcı + {user?.username ?? "-"} +
+
+ Token + {token?.slice(0, 24) ?? "-"}... +
+
+
+
+
+
); }