Skip to content

Commit

Permalink
Feat: Add TeamManagement component infiniflow#3221 (infiniflow#3626)
Browse files Browse the repository at this point in the history
### What problem does this PR solve?

Feat: Add TeamManagement component infiniflow#3221

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
  • Loading branch information
cike8899 authored Nov 25, 2024
1 parent 7874aaa commit a0e9b62
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 7 deletions.
6 changes: 2 additions & 4 deletions web/src/pages/profile-setting/index.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
import { Button } from '@/components/ui/button';
import { ArrowLeft } from 'lucide-react';
import { Outlet } from 'umi';
import { useGetPageTitle } from './hooks';
import { SideBar } from './sidebar';

export default function ProfileSetting() {
const title = useGetPageTitle();
return (
<div className="flex flex-col w-full h-screen bg-background text-foreground">
<header className="flex items-center border-b">
Expand All @@ -24,9 +22,9 @@ export default function ProfileSetting() {
<div className="flex flex-1 bg-muted/50">
<SideBar></SideBar>

<main className="flex-1 p-10">
<h1 className="text-3xl font-bold mb-6"> {title}</h1>
<main className="flex-1 ">
<Outlet></Outlet>
{/* <h1 className="text-3xl font-bold mb-6"> {title}</h1> */}
</main>
</div>
</div>
Expand Down
3 changes: 2 additions & 1 deletion web/src/pages/profile-setting/profile/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import {

export default function Profile() {
return (
<section>
<section className="p-8">
<h1 className="text-3xl font-bold mb-6">User profile</h1>
<Avatar className="w-[120px] h-[120px] mb-6">
<AvatarImage
src={
Expand Down
108 changes: 106 additions & 2 deletions web/src/pages/profile-setting/team/index.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,107 @@
export default function Team() {
return <div>team</div>;
import { Button } from '@/components/ui/button';
import { Card } from '@/components/ui/card';
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu';
import { Table, TableBody, TableCell, TableRow } from '@/components/ui/table';
import { ChevronDown, MoreVertical, Plus, UserPlus } from 'lucide-react';

interface TeamMember {
email: string;
name: string;
role: string;
}

const TeamManagement = () => {
const teamMembers: TeamMember[] = [
{ email: '[email protected]', name: 'Yifan Wu', role: 'Admin' },
{ email: '[email protected]', name: 'Yifan Wu', role: 'Admin' },
];

const stats = {
project: 1,
token: '1,000',
storage: '1GB',
};

return (
<div className="min-h-screen text-white p-8 ">
<div className="max-w-6xl mx-auto">
<div className="flex justify-between items-center mb-8">
<h1 className="text-4xl font-bold">Team management</h1>
<Button className="hover:bg-[#6B4FD8] text-white bg-colors-background-core-standard">
<Plus className="mr-2 h-4 w-4" />
Create team
</Button>
</div>

<div className="mb-8">
<div className="flex justify-between items-center mb-4">
<h2 className="text-2xl font-semibold">Yifan's team</h2>
<Button variant="secondary" size="icon">
<ChevronDown className="h-4 w-4" />
</Button>
</div>

<Card className="border-0 p-6 mb-6 bg-colors-background-inverse-weak">
<div className="grid grid-cols-3 gap-8">
<div>
<p className="text-sm text-gray-400 mb-2">Project</p>
<p className="text-2xl font-semibold">{stats.project}</p>
</div>
<div>
<p className="text-sm text-gray-400 mb-2">Token</p>
<p className="text-2xl font-semibold">{stats.token}</p>
</div>
<div>
<p className="text-sm text-gray-400 mb-2">Storage</p>
<p className="text-2xl font-semibold">{stats.storage}</p>
</div>
</div>
</Card>

<Card className="border-0 p-6 bg-colors-background-inverse-weak">
<Table>
<TableBody>
{teamMembers.map((member, idx) => (
<TableRow key={idx}>
<TableCell>{member.email}</TableCell>
<TableCell>{member.name}</TableCell>
<TableCell className="flex items-center justify-end">
<span className="text-colors-text-core-standard">
{member.role}
</span>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon">
<MoreVertical className="h-4 w-4" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem className="text-red-600">
Remove
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>

<Button variant="outline" className="mt-6 ">
<UserPlus className="mr-2 h-4 w-4" />
Invite member
</Button>
</Card>
</div>
</div>
</div>
);
};

export default TeamManagement;
2 changes: 2 additions & 0 deletions web/tailwind.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ module.exports = {
'colors-outline-sentiment-primary':
'var(--colors-outline-sentiment-primary)',

'colors-text-core-standard': 'var(--colors-text-core-standard)',

primary: {
DEFAULT: 'hsl(var(--primary))',
foreground: 'hsl(var(--primary-foreground))',
Expand Down

0 comments on commit a0e9b62

Please sign in to comment.