0bc0d99c21
- Create SettingsTabLayout component with sidebar navigation - Create ProjectSettingsPage with General settings tab - Create RepositoriesSettingsTab for repo management - Add Members placeholder tab - Update router with settings routes - Add CSS styles for settings layout - Navigate to /projects/:id/settings from workspace header
44 lines
963 B
TypeScript
44 lines
963 B
TypeScript
import React from "react";
|
|
import { Link, useLocation } from "react-router-dom";
|
|
|
|
interface Tab {
|
|
id: string;
|
|
label: string;
|
|
path: string;
|
|
}
|
|
|
|
interface SettingsTabLayoutProps {
|
|
tabs: Tab[];
|
|
children: React.ReactNode;
|
|
basePath: string;
|
|
}
|
|
|
|
export const SettingsTabLayout: React.FC<SettingsTabLayoutProps> = ({
|
|
tabs,
|
|
children,
|
|
basePath,
|
|
}) => {
|
|
const location = useLocation();
|
|
|
|
return (
|
|
<div className="settings-layout">
|
|
<aside className="settings-sidebar">
|
|
<nav className="settings-nav">
|
|
{tabs.map((tab) => (
|
|
<Link
|
|
key={tab.id}
|
|
to={`${basePath}/${tab.path}`}
|
|
className={`settings-nav-link ${
|
|
location.pathname.includes(tab.path) ? "active" : ""
|
|
}`}
|
|
>
|
|
{tab.label}
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
</aside>
|
|
<main className="settings-content">{children}</main>
|
|
</div>
|
|
);
|
|
};
|