feat(modules): modules added to frontend

This commit is contained in:
2025-10-30 10:24:04 -05:00
parent 99b2d762d6
commit c552b9eb1c
20 changed files with 4018 additions and 130 deletions

View File

@@ -1,72 +1,79 @@
import { Server, Settings, User, type LucideIcon } from "lucide-react";
import { userAccess, type UserRoles } from "../../lib/authClient";
import {
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from "../ui/sidebar";
import { Link } from "@tanstack/react-router";
import { type LucideIcon, Server, Settings, User } from "lucide-react";
import { type UserRoles, userAccess } from "../../lib/authClient";
import {
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
} from "../ui/sidebar";
type Items = {
title: string;
url: string;
icon: LucideIcon;
role: UserRoles["role"][];
module: string;
active: boolean;
title: string;
url: string;
icon: LucideIcon;
role: UserRoles["role"][];
module: string;
active: boolean;
};
export default function Admin() {
const items: Items[] = [
{
title: "Users",
url: "/lst/app/admin/users",
icon: User,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
{
title: "Settings",
url: "/lst/app/admin/settings",
icon: Settings,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
{
title: "Servers",
url: "/lst/app/admin/servers",
icon: Server,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
];
return (
<SidebarGroup>
<SidebarGroupLabel>Admin</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
<>
{userAccess(item.module, item.role) &&
item.active && (
<SidebarMenuButton asChild>
<Link to={item.url}>
<item.icon />
<span>{item.title}</span>
</Link>
</SidebarMenuButton>
)}
</>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
);
const items: Items[] = [
{
title: "Users",
url: "/lst/app/admin/users",
icon: User,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
{
title: "System",
url: "/lst/app/admin/settings",
icon: Settings,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
{
title: "Modules",
url: "/lst/app/admin/modules",
icon: Settings,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
{
title: "Servers",
url: "/lst/app/admin/servers",
icon: Server,
role: ["systemAdmin", "admin"],
module: "admin",
active: true,
},
];
return (
<SidebarGroup>
<SidebarGroupLabel>Admin</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>
<>
{userAccess(item.module, item.role) && item.active && (
<SidebarMenuButton asChild>
<Link to={item.url}>
<item.icon />
<span>{item.title}</span>
</Link>
</SidebarMenuButton>
)}
</>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
);
}