import React, { useEffect, useState } from "react"; import { Group, Text, ScrollArea, ActionIcon, rem } from "@mantine/core"; import { IconUser, IconSettings, IconUsers, IconArrowLeft, IconUsersGroup, IconSpaces, IconBrush, } from "@tabler/icons-react"; import { Link, useLocation, useNavigate } from "react-router-dom"; import classes from "./settings.module.css"; interface DataItem { label: string; icon: React.ElementType; path: string; } interface DataGroup { heading: string; items: DataItem[]; } const groupedData: DataGroup[] = [ { heading: "Account", items: [ { label: "Profile", icon: IconUser, path: "/settings/account/profile" }, { label: "Preferences", icon: IconBrush, path: "/settings/account/preferences", }, ], }, { heading: "Workspace", items: [ { label: "General", icon: IconSettings, path: "/settings/workspace" }, { label: "Members", icon: IconUsers, path: "/settings/members", }, { label: "Groups", icon: IconUsersGroup, path: "/settings/groups" }, { label: "Spaces", icon: IconSpaces, path: "/settings/spaces" }, ], }, ]; export default function SettingsSidebar() { const location = useLocation(); const [active, setActive] = useState(location.pathname); const navigate = useNavigate(); useEffect(() => { setActive(location.pathname); }, [location.pathname]); const menuItems = groupedData.map((group) => (
{group.heading} {group.items.map((item) => ( {item.label} ))}
)); return (
navigate(-1)} variant="transparent" c="gray" aria-label="Back" > Settings {menuItems}
v{APP_VERSION}
); }