snowballtools-base/packages/frontend/src/components/projects/project/SettingsTabPanel.tsx
Nabarun Gogoi f870ab90f7
Add layout for Git tab in project settings (#31)
* Implement layout and functionality for git tab panel

* Refactor project repository card prop

* Add repo selection handler prop

---------

Co-authored-by: neeraj <neeraj.rtly@gmail.com>
2023-12-28 11:52:05 +05:30

88 lines
1.9 KiB
TypeScript

import React, { createElement } from 'react';
import {
Tabs,
TabsHeader,
TabsBody,
Tab,
TabPanel,
} from '@material-tailwind/react';
import Domains from './settings/Domains';
import GeneralTabPanel from './settings/GeneralTabPanel';
import { EnvironmentVariablesTabPanel } from './settings/EnvironmentVariablesTabPanel';
import GitTabPanel from './settings/GitTabPanel';
const Members = () => {
return <div>Members</div>;
};
const tabsData = [
{
label: 'General',
icon: '^',
value: 'general',
component: GeneralTabPanel,
},
{
label: 'Domains',
icon: '^',
value: 'domains',
component: Domains,
},
{
label: 'Git',
icon: '^',
value: 'git',
component: GitTabPanel,
},
{
label: 'Environment variables',
icon: '^',
value: 'environmentVariables',
component: EnvironmentVariablesTabPanel,
},
{
label: 'Members',
icon: '^',
value: 'members',
component: Members,
},
];
const SettingsTabPanel = () => {
return (
<>
<Tabs
value={'general'}
orientation="vertical"
className="grid grid-cols-4"
>
<TabsHeader
className="bg-transparent col-span-1"
indicatorProps={{
className: 'bg-gray-900/10 shadow-none !text-gray-900',
}}
>
{tabsData.map(({ label, value, icon }) => (
<Tab key={value} value={value} className="flex justify-start">
<div className="flex gap-2">
<div>{icon}</div>
<div>{label}</div>
</div>
</Tab>
))}
</TabsHeader>
<TabsBody className="col-span-2">
{tabsData.map(({ value, component }) => (
<TabPanel key={value} value={value} className="p-2">
{createElement(component)}
</TabPanel>
))}
</TabsBody>
</Tabs>
</>
);
};
export default SettingsTabPanel;