balibabu commited on
Commit
00c857e
·
1 Parent(s): 1db6d0f

Feat: Add TeamManagement component #3221 (#3626)

Browse files

### What problem does this PR solve?

Feat: Add TeamManagement component #3221

### Type of change


- [x] New Feature (non-breaking change which adds functionality)

web/src/pages/profile-setting/index.tsx CHANGED
@@ -1,11 +1,9 @@
1
  import { Button } from '@/components/ui/button';
2
  import { ArrowLeft } from 'lucide-react';
3
  import { Outlet } from 'umi';
4
- import { useGetPageTitle } from './hooks';
5
  import { SideBar } from './sidebar';
6
 
7
  export default function ProfileSetting() {
8
- const title = useGetPageTitle();
9
  return (
10
  <div className="flex flex-col w-full h-screen bg-background text-foreground">
11
  <header className="flex items-center border-b">
@@ -24,9 +22,9 @@ export default function ProfileSetting() {
24
  <div className="flex flex-1 bg-muted/50">
25
  <SideBar></SideBar>
26
 
27
- <main className="flex-1 p-10">
28
- <h1 className="text-3xl font-bold mb-6"> {title}</h1>
29
  <Outlet></Outlet>
 
30
  </main>
31
  </div>
32
  </div>
 
1
  import { Button } from '@/components/ui/button';
2
  import { ArrowLeft } from 'lucide-react';
3
  import { Outlet } from 'umi';
 
4
  import { SideBar } from './sidebar';
5
 
6
  export default function ProfileSetting() {
 
7
  return (
8
  <div className="flex flex-col w-full h-screen bg-background text-foreground">
9
  <header className="flex items-center border-b">
 
22
  <div className="flex flex-1 bg-muted/50">
23
  <SideBar></SideBar>
24
 
25
+ <main className="flex-1 ">
 
26
  <Outlet></Outlet>
27
+ {/* <h1 className="text-3xl font-bold mb-6"> {title}</h1> */}
28
  </main>
29
  </div>
30
  </div>
web/src/pages/profile-setting/profile/index.tsx CHANGED
@@ -11,7 +11,8 @@ import {
11
 
12
  export default function Profile() {
13
  return (
14
- <section>
 
15
  <Avatar className="w-[120px] h-[120px] mb-6">
16
  <AvatarImage
17
  src={
 
11
 
12
  export default function Profile() {
13
  return (
14
+ <section className="p-8">
15
+ <h1 className="text-3xl font-bold mb-6">User profile</h1>
16
  <Avatar className="w-[120px] h-[120px] mb-6">
17
  <AvatarImage
18
  src={
web/src/pages/profile-setting/team/index.tsx CHANGED
@@ -1,3 +1,107 @@
1
- export default function Team() {
2
- return <div>team</div>;
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Button } from '@/components/ui/button';
2
+ import { Card } from '@/components/ui/card';
3
+ import {
4
+ DropdownMenu,
5
+ DropdownMenuContent,
6
+ DropdownMenuItem,
7
+ DropdownMenuTrigger,
8
+ } from '@/components/ui/dropdown-menu';
9
+ import { Table, TableBody, TableCell, TableRow } from '@/components/ui/table';
10
+ import { ChevronDown, MoreVertical, Plus, UserPlus } from 'lucide-react';
11
+
12
+ interface TeamMember {
13
+ email: string;
14
+ name: string;
15
+ role: string;
16
  }
17
+
18
+ const TeamManagement = () => {
19
+ const teamMembers: TeamMember[] = [
20
+ { email: '[email protected]', name: 'Yifan Wu', role: 'Admin' },
21
+ { email: '[email protected]', name: 'Yifan Wu', role: 'Admin' },
22
+ ];
23
+
24
+ const stats = {
25
+ project: 1,
26
+ token: '1,000',
27
+ storage: '1GB',
28
+ };
29
+
30
+ return (
31
+ <div className="min-h-screen text-white p-8 ">
32
+ <div className="max-w-6xl mx-auto">
33
+ <div className="flex justify-between items-center mb-8">
34
+ <h1 className="text-4xl font-bold">Team management</h1>
35
+ <Button className="hover:bg-[#6B4FD8] text-white bg-colors-background-core-standard">
36
+ <Plus className="mr-2 h-4 w-4" />
37
+ Create team
38
+ </Button>
39
+ </div>
40
+
41
+ <div className="mb-8">
42
+ <div className="flex justify-between items-center mb-4">
43
+ <h2 className="text-2xl font-semibold">Yifan's team</h2>
44
+ <Button variant="secondary" size="icon">
45
+ <ChevronDown className="h-4 w-4" />
46
+ </Button>
47
+ </div>
48
+
49
+ <Card className="border-0 p-6 mb-6 bg-colors-background-inverse-weak">
50
+ <div className="grid grid-cols-3 gap-8">
51
+ <div>
52
+ <p className="text-sm text-gray-400 mb-2">Project</p>
53
+ <p className="text-2xl font-semibold">{stats.project}</p>
54
+ </div>
55
+ <div>
56
+ <p className="text-sm text-gray-400 mb-2">Token</p>
57
+ <p className="text-2xl font-semibold">{stats.token}</p>
58
+ </div>
59
+ <div>
60
+ <p className="text-sm text-gray-400 mb-2">Storage</p>
61
+ <p className="text-2xl font-semibold">{stats.storage}</p>
62
+ </div>
63
+ </div>
64
+ </Card>
65
+
66
+ <Card className="border-0 p-6 bg-colors-background-inverse-weak">
67
+ <Table>
68
+ <TableBody>
69
+ {teamMembers.map((member, idx) => (
70
+ <TableRow key={idx}>
71
+ <TableCell>{member.email}</TableCell>
72
+ <TableCell>{member.name}</TableCell>
73
+ <TableCell className="flex items-center justify-end">
74
+ <span className="text-colors-text-core-standard">
75
+ {member.role}
76
+ </span>
77
+ <DropdownMenu>
78
+ <DropdownMenuTrigger asChild>
79
+ <Button variant="ghost" size="icon">
80
+ <MoreVertical className="h-4 w-4" />
81
+ </Button>
82
+ </DropdownMenuTrigger>
83
+ <DropdownMenuContent align="end">
84
+ <DropdownMenuItem>Edit</DropdownMenuItem>
85
+ <DropdownMenuItem className="text-red-600">
86
+ Remove
87
+ </DropdownMenuItem>
88
+ </DropdownMenuContent>
89
+ </DropdownMenu>
90
+ </TableCell>
91
+ </TableRow>
92
+ ))}
93
+ </TableBody>
94
+ </Table>
95
+
96
+ <Button variant="outline" className="mt-6 ">
97
+ <UserPlus className="mr-2 h-4 w-4" />
98
+ Invite member
99
+ </Button>
100
+ </Card>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ );
105
+ };
106
+
107
+ export default TeamManagement;
web/tailwind.config.js CHANGED
@@ -29,6 +29,8 @@ module.exports = {
29
  'colors-outline-sentiment-primary':
30
  'var(--colors-outline-sentiment-primary)',
31
 
 
 
32
  primary: {
33
  DEFAULT: 'hsl(var(--primary))',
34
  foreground: 'hsl(var(--primary-foreground))',
 
29
  'colors-outline-sentiment-primary':
30
  'var(--colors-outline-sentiment-primary)',
31
 
32
+ 'colors-text-core-standard': 'var(--colors-text-core-standard)',
33
+
34
  primary: {
35
  DEFAULT: 'hsl(var(--primary))',
36
  foreground: 'hsl(var(--primary-foreground))',