diff --git a/adminfront/src/app/routes.tsx b/adminfront/src/app/routes.tsx
index 96bde96f..e4ff81b2 100644
--- a/adminfront/src/app/routes.tsx
+++ b/adminfront/src/app/routes.tsx
@@ -6,6 +6,7 @@ import AuditLogsPage from "../features/audit/AuditLogsPage";
import AuthPage from "../features/auth/AuthPage";
import DashboardPage from "../features/dashboard/DashboardPage";
import GlobalOverviewPage from "../features/overview/GlobalOverviewPage";
+import LoginPage from "../features/auth/LoginPage";
import TenantGroupCreatePage from "../features/tenant-groups/routes/TenantGroupCreatePage";
import TenantGroupDetailPage from "../features/tenant-groups/routes/TenantGroupDetailPage";
import TenantGroupListPage from "../features/tenant-groups/routes/TenantGroupListPage";
@@ -22,6 +23,10 @@ import UserListPage from "../features/users/UserListPage";
export const router = createBrowserRouter(
[
+ {
+ path: "/login",
+ element: ,
+ },
{
path: "/",
element: ,
diff --git a/adminfront/src/components/layout/AppLayout.tsx b/adminfront/src/components/layout/AppLayout.tsx
index 5dbf388a..20e07755 100644
--- a/adminfront/src/components/layout/AppLayout.tsx
+++ b/adminfront/src/components/layout/AppLayout.tsx
@@ -4,107 +4,135 @@ import {
Key,
KeyRound,
LayoutDashboard,
- LayoutGrid,
- Moon,
- NotebookTabs,
- ShieldHalf,
- Sun,
- Users,
-} from "lucide-react";
-import { useEffect, useState } from "react";
-import { NavLink, Outlet } from "react-router-dom";
-import { t } from "../../lib/i18n";
-import RoleSwitcher from "./RoleSwitcher";
-
-const navItems = [
- { label: "ui.admin.nav.overview", to: "/", icon: LayoutDashboard },
- {
- label: "ui.admin.nav.tenant_dashboard",
- to: "/dashboard",
- icon: ShieldHalf,
- },
- { label: "ui.admin.nav.tenant_groups", to: "/tenant-groups", icon: LayoutGrid },
- { label: "ui.admin.nav.tenants", to: "/tenants", icon: Building2 },
- { label: "ui.admin.nav.users", to: "/users", icon: Users },
- { label: "ui.admin.nav.api_keys", to: "/api-keys", icon: Key },
- { label: "ui.admin.nav.audit_logs", to: "/audit-logs", icon: NotebookTabs },
- { label: "ui.admin.nav.auth_guard", to: "/auth", icon: KeyRound },
-];
-
-function AppLayout() {
- const [theme, setTheme] = useState<"light" | "dark">(() => {
- const stored = window.localStorage.getItem("admin_theme");
- return stored === "dark" ? "dark" : "light";
- });
-
- useEffect(() => {
- const root = document.documentElement;
- root.classList.remove("light", "dark");
- if (theme === "light") {
- root.classList.add("light");
- } else {
- root.classList.add("dark");
- }
- window.localStorage.setItem("admin_theme", theme);
- }, [theme]);
-
- const toggleTheme = () => {
- setTheme((prev) => (prev === "light" ? "dark" : "light"));
- };
-
- return (
-
-