This is an automated email from the ASF dual-hosted git repository.
yumeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake-website.git
The following commit(s) were added to refs/heads/main by this push:
new dc1cb6aa4 feat: addTeamPage (#351)
dc1cb6aa4 is described below
commit dc1cb6aa4a05e0c0cd112b6d9b5da06e9b68074c
Author: Yifu Hu <[email protected]>
AuthorDate: Thu Dec 22 16:42:46 2022 +0800
feat: addTeamPage (#351)
* feat: addTeamPage
* fix: some adjustment
* Update Contributor.tsx
Co-authored-by: Yumeng Wang <[email protected]>
---
docusaurus.config.js | 5 +
info/Team/committers.json | 60 +++++
info/Team/contributors.json | 434 ++++++++++++++++++++++++++++++++++++
info/Team/ppmc.json | 95 ++++++++
src/components/Dropdown/index.tsx | 33 +++
src/components/Team/Committer.tsx | 26 +++
src/components/Team/Contributor.tsx | 129 +++++++++++
src/components/Team/PPMC.tsx | 23 ++
src/components/Team/PersonCard.tsx | 45 ++++
src/components/Team/TeampageBG.tsx | 71 ++++++
src/components/Team/Title.tsx | 19 ++
src/components/Team/types.ts | 8 +
src/pages/team/index.js | 33 +++
static/icon/Stroke-Down.png | Bin 0 -> 220 bytes
static/icon/Stroke-Up.png | Bin 0 -> 211 bytes
static/img/Team/BottomBG-mobile.png | Bin 0 -> 8556 bytes
static/img/Team/BottomBG-tablet.png | Bin 0 -> 12983 bytes
static/img/Team/BottomBG-ws.png | Bin 0 -> 18261 bytes
static/img/Team/Frame 308.png | Bin 0 -> 66515 bytes
static/img/Team/HeaderBG-mobile.png | Bin 0 -> 2833 bytes
static/img/Team/HeaderBG-tablet.png | Bin 0 -> 4218 bytes
static/img/Team/HeaderBG-ws.png | Bin 0 -> 8517 bytes
tailwind.config.js | 1 +
23 files changed, 982 insertions(+)
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 50e8c4713..979bd284d 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -156,6 +156,11 @@ const versions = require('./versions.json');
label: 'Community',
docsPluginId: 'community'
},
+ {
+ to: '/team',
+ label: 'Team',
+ position: 'right'
+ },
{
to: '/blog',
label: 'Blog',
diff --git a/info/Team/committers.json b/info/Team/committers.json
new file mode 100644
index 000000000..5a44a4d90
--- /dev/null
+++ b/info/Team/committers.json
@@ -0,0 +1,60 @@
+{
+ "data": [
+ {
+ "realName": "Louis Kaiyun Zhang",
+ "githubId": "Startrekzky",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/14050754?v=4",
+ "githubLink": "https://github.com/startrekzky"
+ },
+ {
+ "realName": "Jinglei Ren",
+ "githubId": "basicthinker",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/592493?v=4",
+ "githubLink": "https://github.com/basicthinker"
+ },
+ {
+ "realName": "Zhicheng Jiang",
+ "githubId": "mappjzc",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/2921251?v=4",
+ "githubLink": "https://github.com/mappjzc"
+ },
+ {
+ "realName": "Zikuan An",
+ "githubId": "abeizn",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/101256042?v=4",
+ "githubLink": "https://github.com/abeizn"
+ },
+ {
+ "realName": "Yanghui Lin",
+ "githubId": "likyh",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/3294100?v=4",
+ "githubLink": "https://github.com/likyh"
+ },
+ {
+ "realName": "Yumeng Wang",
+ "githubId": "yumengwang03",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/9535430?v=4",
+ "githubLink": "https://github.com/yumengwang03"
+ },
+ {
+ "realName": "Shimin An",
+ "githubId": "SnowMoon-Dev",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/42627702?v=4",
+ "githubLink": "https://github.com/snowmoon-dev"
+ },
+ {
+ "realName": "Bin Ji",
+ "githubId": "matrixji",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/183388?v=4",
+ "githubLink": "https://github.com/matrixji"
+ }
+ ]
+}
diff --git a/info/Team/contributors.json b/info/Team/contributors.json
new file mode 100644
index 000000000..84d8a2a73
--- /dev/null
+++ b/info/Team/contributors.json
@@ -0,0 +1,434 @@
+{
+ "Oct-Dec-2022": [
+ {
+ "realName": "Shaohui Liu",
+ "githubId": "lshmouse",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/118687?v=4",
+ "githubLink": "https://github.com/lshmouse",
+ "date": "2022/10/28"
+ },
+ {
+ "realName": "Yue Wang",
+ "githubId": "luna6677",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/48425466?v=4",
+ "githubLink": "https://github.com/luna6677",
+ "date": "2022/11/28"
+ }
+ ],
+ "July-Sept-2022": [
+ {
+ "realName": "Huazheng Pan",
+ "githubId": "perhapzz",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/48175595?v=4",
+ "githubLink": "https://github.com/perhapzz",
+ "date": "2022/07/13"
+ },
+ {
+ "realName": "Wei Tian",
+ "githubId": "yuqiangabab",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/23449449?v=4",
+ "githubLink": "https://github.com/yuqiangabab",
+ "date": "2022/09/04"
+ },
+ {
+ "realName": "Kai Tian",
+ "githubId": "tk103331",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/4404609?v=4",
+ "githubLink": "https://github.com/tk103331",
+ "date": "2022/08/23"
+ },
+ {
+ "realName": "Zhu Jin",
+ "githubId": "jinzhu2002",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/16096637?v=4",
+ "githubLink": "https://github.com/jinzhu2002",
+ "date": "2022/07/25"
+ },
+ {
+ "realName": "Zhenyu Zhang",
+ "githubId": "zhangzhenyu2",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/26641573?v=4",
+ "githubLink": "https://github.com/zhangzhenyu2",
+ "date": "2022/08/31"
+ },
+ {
+ "realName": "M Palanikannan",
+ "githubId": "Palanikannan1437",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/73993394?v=4",
+ "githubLink": "https://github.com/Palanikannan1437",
+ "date": "2022/08/25"
+ },
+ {
+ "realName": "Nico Gallinal",
+ "githubId": "nicoabie",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/2797992?v=4",
+ "githubLink": "https://github.com/nicoabie",
+ "date": "2022/09/04"
+ }
+ ],
+ "April-June-2022": [
+ {
+ "realName": "Jiakeng Li",
+ "githubId": "skyleaworlder",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/45269589?v=4",
+ "githubLink": "https://github.com/skyleaworlder",
+ "date": "2022/05/19"
+ },
+ {
+ "realName": "Xiangyu Zhang",
+ "githubId": "xgdyp",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/37795442?v=4",
+ "githubLink": "https://github.com/xgdyp",
+ "date": "2022/05/19"
+ },
+ {
+ "realName": "XiaoLei Wang",
+ "githubId": "fatelei",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/961094?v=4",
+ "githubLink": "https://github.com/fatelei",
+ "date": "2022/05/19"
+ },
+ {
+ "realName": "Peng Su",
+ "githubId": "SuperSupeng",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/20471278?v=4",
+ "githubLink": "https://github.com/SuperSupeng",
+ "date": "2022/05/20"
+ },
+ {
+ "realName": "Dunyu Song",
+ "githubId": "DunyuSong",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/40191197?v=4",
+ "githubLink": "https://github.com/DunyuSong",
+ "date": "2022/05/23"
+ },
+ {
+ "realName": "Nikita Koselev",
+ "githubId": "nikitakoselev",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/6383738?v=4",
+ "githubLink": "https://github.com/nikitakoselev",
+ "date": "2022/05/23"
+ },
+ {
+ "realName": "Abhishek KM",
+ "githubId": "Sync271",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/67158080?v=4",
+ "githubLink": "https://github.com/Sync271",
+ "date": "2022/05/25"
+ },
+ {
+ "realName": "Guiping Tan",
+ "githubId": "thenicetgp",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/47466847?v=4",
+ "githubLink": "https://github.com/thenicetgp",
+ "date": "2022/05/26"
+ },
+ {
+ "realName": "Prajwal Borkar",
+ "githubId": "prajwalborkar",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/48290911?v=4",
+ "githubLink": "https://github.com/prajwalborkar",
+ "date": "2022/06/08"
+ },
+ {
+ "realName": "Keon Amini",
+ "githubId": "keon94",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/25063936?v=4",
+ "githubLink": "https://github.com/keon94",
+ "date": "2022/06/08"
+ },
+ {
+ "realName": "Geyu Chen",
+ "githubId": "fredtheflat",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/52497911?v=4",
+ "githubLink": "https://github.com/fredtheflat",
+ "date": "2022/06/23"
+ },
+ {
+ "realName": "Danna Wang",
+ "githubId": "banshengbushu",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/18100964?v=4",
+ "githubLink": "https://github.com/banshengbushu",
+ "date": "2022/06/23"
+ },
+ {
+ "realName": "Zhenlei Li",
+ "githubId": "moonlzl",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/107170821?v=4",
+ "githubLink": "https://github.com/moonlzl",
+ "date": "2022/06/23"
+ },
+ {
+ "realName": "Prasurjya Pran Borah",
+ "githubId": "ppborah",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/96339995?v=4",
+ "githubLink": "https://github.com/ppborah",
+ "date": "2022/06/30"
+ }
+ ],
+ "Jan-March-2022": [
+ ],
+ "Time Not Specified": [
+ {
+ "realName": "Pranshu Raj",
+ "githubId": "Pranshu Raj",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/50316017?v=4",
+ "githubLink": "https://github.com/Pranshu Raj"
+ },
+ {
+ "realName": "Krish Gupta",
+ "githubId": "krshkun",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/91655303?v=4",
+ "githubLink": "https://github.com/krshkun"
+ },
+ {
+ "realName": "Prasurjya Pran Borah",
+ "githubId": "ppborah",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/96339995?v=4",
+ "githubLink": "https://github.com/ppborah"
+ },
+ {
+ "realName": "Kevin Kline",
+ "githubId": "kevin-kline",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/27032263?v=4",
+ "githubLink": "https://github.com/kevin-kline"
+ },
+ {
+ "realName": "Junren Yu",
+ "githubId": "mintsweet",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/37237996?v=4",
+ "githubLink": "https://github.com/mintsweet"
+ },
+ {
+ "realName": "Jinlong Peng",
+ "githubId": "long2ice",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/13377178?v=4",
+ "githubLink": "https://github.com/long2ice"
+ },
+ {
+ "realName": "Justin Brazeau",
+ "githubId": "oddscenes",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/3789273?v=4",
+ "githubLink": "https://github.com/oddscenes"
+ },
+ {
+ "realName": "Paul Goertzen",
+ "githubId": "paulgoertzen-merico",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/75139737?v=4",
+ "githubLink": "https://github.com/paulgoertzen-merico"
+ },
+ {
+ "realName": "Shubham Gupta",
+ "githubId": "shubham-cmyk",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/69793468?v=4",
+ "githubLink": "https://github.com/shubham-cmyk"
+ },
+ {
+ "realName": "Chaojie Yan",
+ "githubId": "usharerose",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/24732569?v=4",
+ "githubLink": "https://github.com/usharerose"
+ },
+ {
+ "realName": "Yifu Hu",
+ "githubId": "guyue66",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/114053431?v=4",
+ "githubLink": "https://github.com/guyue66"
+ },
+ {
+ "realName": "ggcannard",
+ "githubId": "ggcannard",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/53152985?v=4",
+ "githubLink": "https://github.com/ggcannard"
+ },
+ {
+ "realName": "Joshua Poddoku",
+ "githubId": "JoshuaPoddoku",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/31725457?v=4",
+ "githubLink": "https://github.com/JoshuaPoddoku"
+ },
+ {
+ "realName": "Henit Chobisa",
+ "githubId": "henit-chobisa",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/72302948?v=4",
+ "githubLink": "https://github.com/henit-chobisa"
+ },
+ {
+ "realName": "CzarScar",
+ "githubId": "CzarScar",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/5074190?v=4",
+ "githubLink": "https://github.com/CzarScar"
+ },
+ {
+ "realName": "Julián Tagliarini",
+ "githubId": "jltaglia",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/6411322?v=4",
+ "githubLink": "https://github.com/jltaglia"
+ },
+ {
+ "realName": "Qi Zhang",
+ "githubId": "zzzhangqi",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/39754275?v=4",
+ "githubLink": "https://github.com/zzzhangqi"
+ },
+ {
+ "realName": "Weisi Deng",
+ "githubId": "Ushuaiaff",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/55527719?v=4",
+ "githubLink": "https://github.com/Ushuaiaff"
+ },
+ {
+ "realName": "Daniel Hu",
+ "githubId": "daniel-hutao",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/18692628?v=4",
+ "githubLink": "https://github.com/daniel-hutao"
+ },
+ {
+ "realName": "Nitin Vasanth",
+ "githubId": "nitinvasanth",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/11300983?v=4",
+ "githubLink": "https://github.com/nitinvasanth"
+ },
+ {
+ "realName": "Bivas Biswas",
+ "githubId": "Bivas-Biswas",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/75929842?v=4",
+ "githubLink": "https://github.com/Bivas-Biswas"
+ },
+ {
+ "realName": "Ankit Malakar",
+ "githubId": "ankitmalakar7",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/84442212?v=4",
+ "githubLink": "https://github.com/ankitmalakar7"
+ },
+ {
+ "realName": "Bishal Das",
+ "githubId": "bishal7679",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/70086051?v=4",
+ "githubLink": "https://github.com/bishal7679"
+ },
+ {
+ "realName": "Marcelo Menéndez Vázquez",
+ "githubId": "marcemv90",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/16705936?v=4",
+ "githubLink": "https://github.com/marcemv90"
+ },
+ {
+ "realName": "Camille Teruel",
+ "githubId": "CamilleTeruel",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/251060?v=4",
+ "githubLink": "https://github.com/CamilleTeruel"
+ },
+ {
+ "realName": "Kevin Jones",
+ "githubId": "joneskj55",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/20748598?v=4",
+ "githubLink": "https://github.com/joneskj55"
+ },
+ {
+ "realName": "jasendo",
+ "githubId": "jasendo",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/105761928?v=4",
+ "githubLink": "https://github.com/jasendo"
+ },
+ {
+ "realName": "Eng Zer Jun",
+ "githubId": "Juneezee",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/20135478?v=4",
+ "githubLink": "https://github.com/Juneezee"
+ },
+ {
+ "realName": "Tiexin Guo",
+ "githubId": "IronCore864",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/19277614?v=4",
+ "githubLink": "https://github.com/IronCore864"
+ },
+ {
+ "realName": "Ann Catherine Jose",
+ "githubId": "annjose",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/1040305?v=4",
+ "githubLink": "https://github.com/annjose"
+ },
+ {
+ "realName": "Hao Ke",
+ "githubId": "KeHaohaoke",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/103085894?v=4",
+ "githubLink": "https://github.com/KeHaohaoke"
+ },
+ {
+ "realName": "Jax Jinxiu Zhou",
+ "githubId": "jaxzhou",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/3425465?v=4",
+ "githubLink": "https://github.com/jaxzhou"
+ },
+ {
+ "realName": "Narro Cong Wang",
+ "githubId": "narrowizard",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/11383928?v=4",
+ "githubLink": "https://github.com/narrowizard"
+ },
+ {
+ "realName": "Jingyang Liang",
+ "githubId": "liangjingyang",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/2056705?v=4",
+ "githubLink": "https://github.com/liangjingyang"
+ }
+ ]
+}
diff --git a/info/Team/ppmc.json b/info/Team/ppmc.json
new file mode 100644
index 000000000..39a4ff6d7
--- /dev/null
+++ b/info/Team/ppmc.json
@@ -0,0 +1,95 @@
+{
+ "data": [
+ {
+ "realName": "Willem Ning Jiang",
+ "githubId": "WillemJiang",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/219644?v=4",
+ "githubLink": "https://github.com/WillemJiang"
+ },
+ {
+ "realName": "Liang Zhang",
+ "githubId": "terrymanu",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/5516298?v=4",
+ "githubLink": "https://github.com/terrymanu"
+ },
+ {
+ "realName": "Lidong Dai",
+ "githubId": "davidzollo",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/15833811?v=4",
+ "githubLink": "https://github.com/davidzollo"
+ },
+ {
+ "realName": "Sijie Guo",
+ "githubId": "sijie",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/1217863?v=4",
+ "githubLink": "https://github.com/sijie"
+ },
+ {
+ "realName": "Felix Cheung",
+ "githubId": "felixcheung",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/8969467?v=4",
+ "githubLink": "https://github.com/felixcheung"
+ },
+ {
+ "realName": "Jean-Baptiste Onofré",
+ "githubId": "jbonofre",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/158903?v=4",
+ "githubLink": "https://github.com/jbonofre"
+ },
+ {
+ "realName": "Klesh Wong",
+ "githubId": "klesh",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/61080?v=4",
+ "githubLink": "https://github.com/klesh"
+ },
+ {
+ "realName": "Julien Chinapen",
+ "githubId": "e2corporation",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/1742233?v=4",
+ "githubLink": "https://github.com/e2corporation"
+ },
+ {
+ "realName": "Liang Zhang",
+ "githubId": "mindlesscloud",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/8455907?v=4",
+ "githubLink": "https://github.com/mindlesscloud"
+ },
+ {
+ "realName": "Yingchu Chen",
+ "githubId": "warren830",
+ "email": "",
+ "avatar": "https://avatars.githubusercontent.com/u/39366025?v=4",
+ "githubLink": "https://github.com/warren830"
+ },
+ {
+ "realName": "Oliver O'Donnell",
+ "githubId": "joncodo",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/3011407?v=4",
+ "githubLink": "https://github.com/joncodo"
+ },
+ {
+ "realName": "Hezheng Yin",
+ "githubId": "hezyin",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/2908155?v=4",
+ "githubLink": "https://github.com/hezyin"
+ },
+ {
+ "realName": "Maxim Wheatley",
+ "githubId": "MaximDub",
+ "email": "[email protected]",
+ "avatar": "https://avatars.githubusercontent.com/u/84928455?v=4",
+ "githubLink": "https://github.com/MaximDub"
+ }
+ ]
+}
diff --git a/src/components/Dropdown/index.tsx
b/src/components/Dropdown/index.tsx
new file mode 100644
index 000000000..e70083737
--- /dev/null
+++ b/src/components/Dropdown/index.tsx
@@ -0,0 +1,33 @@
+import React, { useState } from "react";
+import downLogo from '@site/static/icon/Stroke-Down.png';
+import upLogo from '@site/static/icon/Stroke-Up.png';
+
+
+interface DropdownProps {
+ label?: string;
+ meau: string[];
+ width?: string;
+ height?: string;
+ click?: any;
+}
+
+export function Dropdown(props: DropdownProps) {
+ const { width = '146px', height = '20px', label = '默认label', meau, click }
= props;
+ const [visible, setVisible] = useState(false);
+ return (
+ <div onClick={() => setVisible(!visible)} className={`w-[${width}]
h-[${height}] text-heading4 font-semibold text-primary-800 flex items-center
cursor-pointer relative`}>
+ <span>
+ {label}
+ </span>
+ <div className="w-[24px] h-[24px] flex items-center justify-center">
+ <img src={visible ? upLogo : downLogo}/>
+ </div>
+ { visible && <div className="absolute w-[188px] p-[8px] rounded-[4px]
shadow-high bg-[#FFFFFF] left-0 top-5 z-20">
+ {meau.map(item => (
+ <div className="flex justify-center items-center h-[30px]
text-heading4 hover:bg-neutral-50 text-neutral-600 font-normal" onClick={() =>
click && click(item)}>
+ {item}
+ </div>))}
+ </div>}
+ </div>
+ )
+}
\ No newline at end of file
diff --git a/src/components/Team/Committer.tsx
b/src/components/Team/Committer.tsx
new file mode 100644
index 000000000..986f328d8
--- /dev/null
+++ b/src/components/Team/Committer.tsx
@@ -0,0 +1,26 @@
+import React from "react";
+import committerInfo from '../../../info/Team/committers.json';
+import { PersonCard } from './PersonCard';
+import { ContributorInfo } from './types';
+
+export function Committer() {
+ return (
+ <div className="py-[60px] sm:py-5 mobile:py-4">
+ <h2 className="
+ text-primary-800 font-semibold
+ text-heading1 sm:text-heading3
+ mb-[16px] sm:mb-[12px] mobile:mb-[12px]
+ ">
+ Committers
+ </h2>
+ <p className="text-label18 font-normal text-neutral-500 mb-[64px]
sm:mb-[32px] mobile:mb-[24px] ">
+ Committers contribute to the codebase and documentation, participate
in discussions via the dev mailing list, work on the issue tracker and initiate
many other activities to foster the dynamic and engaging community we all love.
+ </p>
+ <div className="
+ grid grid-cols-3 gap-x-4 gap-y-4 mobile:gap-y-3 sm:grid-cols-2
mobile:grid-cols-1
+ z-10 max-w-[1200px] mx-auto relative">
+ {committerInfo.data.map((committer: ContributorInfo) => <PersonCard
info={committer}/>)}
+ </div>
+ </div>
+ );
+}
diff --git a/src/components/Team/Contributor.tsx
b/src/components/Team/Contributor.tsx
new file mode 100644
index 000000000..e3ee6832b
--- /dev/null
+++ b/src/components/Team/Contributor.tsx
@@ -0,0 +1,129 @@
+import React, { useState, useEffect } from "react";
+import Contributors from '../../../info/Team/contributors.json';
+import { PersonCard } from "./PersonCard";
+import { ContributorInfo } from "./types";
+import { TeampageBottomBG } from "./TeampageBG";
+import MakeContributionsBG from '@site/static/img/Team/Frame 308.png';
+import Link from "@docusaurus/Link";
+import { Dropdown } from "../Dropdown";
+
+
+const meau = [
+ 'Oct-Dec-2022',
+ 'July-Sept-2022',
+ 'April-June-2022',
+ // 'Jan-March-2022',
+ 'Time Not Specified'
+]
+
+
+
+export function Contributor() {
+ const [selectedDate, setSelectedDate] = useState(meau[0]);
+ return (
+ <div className="relative">
+ <TeampageBottomBG />
+ <div className="relative z-10">
+ <div className="py-[60px] sm:py-5 mobile:py-4">
+ <h2
+ className="
+ text-primary-800 font-semibold
+ text-heading1 sm:text-heading3
+ mb-[16px] sm:mb-[12px] mobile:mb-[12px]
+ "
+ >
+ Contributors
+ </h2>
+ <p className="text-label18 font-normal text-neutral-500 mb-[64px]
sm:mb-[32px] mobile:mb-[24px] ">
+ New contributors are always welcomed by our community. You will be
+ awarded with a certificate once your first PRs get merged into the
+ codebase.
+ </p>
+ <div>
+ <div className="
+ flex justify-between mobile:block
+ h-[30px] sm:h-[24px] mobile:h-[60px]
+ mt-7 sm:mt-5 mobile:mt-4
+ mb-4 sm:mb-3 mobile:mb-[18px]
+ ">
+ <h3 className="
+ text-primary-800 font-semibold
+ text-heading2 sm:text-label18 mobile:text-label16Lake
+ ">
+ New Contributors
+ </h3>
+ <div className="relative">
+ <Dropdown meau={meau} label={selectedDate} click={(select) =>
setSelectedDate(select)}/>
+ </div>
+ </div>
+ <div
+ className="
+ grid grid-cols-3 gap-x-4 gap-y-4 mobile:gap-y-3 sm:grid-cols-2
mobile:grid-cols-1
+ z-10 max-w-[1200px] mx-auto relative"
+ >
+ {Contributors[selectedDate].map((contributor: ContributorInfo) => (
+ <PersonCard info={contributor} />
+ ))}
+ </div>
+ </div>
+ </div>
+ <TopCommunityContributors />
+ <MakeContributions />
+ </div>
+ </div>
+ );
+}
+
+function TopCommunityContributors() {
+ return (
+ <div className="py-[60px] sm:py-5 mobile:py-4">
+ <h2
+ className="
+ text-primary-800 font-semibold
+ text-heading1 sm:text-heading3
+ mb-[64px] sm:mb-[32px] mobile:mb-[24px]
+ "
+ >
+ Top Community Contributors
+ </h2>
+ <iframe
+ className="w-[100%] h-[601px] mobile:h-[542px]"
+
src="https://grafana-lake.demo.devlake.io/grafana/d/r_ruegRVz/bi-weekly-community-retro-for-community-huddle?orgId=1&var-repo_id=github:GithubRepo:1:484251804&var-repo_id=github:GithubRepo:1:384111310&var-issue_type=All&var-interval=14&viewPanel=52"
+ />
+ </div>
+ );
+}
+
+function MakeContributions() {
+ return (
+ <div className="
+ relative
+ flex items-center bg-primary-200 rounded-[20px]
+ mb-[60px] sm:mb-[40px] mobile:mb-5 h-[240px] sm:h-[162px]
mobile:h-[210px]">
+ <img src={MakeContributionsBG} className="absolute top-[40px]
mobile:top-[92px] left-[0] w-[100%] h-[200px] sm:h-[122px] mobile:h-[118px]"/>
+ <div className="h-[80px] sm:h-[90px] mobile:h-[162px] mx-[48px]
sm:mx-[24px] flex items-center justify-between mobile:block w-full ">
+ <div className="h-[80px] sm:h-[90px]">
+ <h2 className="text-primary-800 font-semibold text-heading1
sm:text-heading2">
+ Make Contributions
+ </h2>
+ <p className="text-neutral-500 text-label18 sm:text-label16Lake">
+ Anyone can be a contributor of Apache DevLake. Come grow with us!
+ </p>
+ </div>
+ <Link
+ className="
+ relative z-20
+ mobile:mt-4
+ bg-primary-500
+ primary-button
+ w-[160px] h-[48px]
+ rounded-[10px] font-normal text-heading4
+ "
+
to="https://devlake.apache.org/community/make-contribution/development-workflow"
+ >
+ Start Contributing
+ </Link>
+ </div>
+ </div>
+ );
+}
diff --git a/src/components/Team/PPMC.tsx b/src/components/Team/PPMC.tsx
new file mode 100644
index 000000000..12cf8d521
--- /dev/null
+++ b/src/components/Team/PPMC.tsx
@@ -0,0 +1,23 @@
+import React from "react";
+import ppmcInfo from '../../../info/Team/ppmc.json';
+import { PersonCard } from './PersonCard';
+import { ContributorInfo } from './types';
+
+export function PPMC() {
+ return (
+ <div className="py-[60px] sm:py-5 mobile:py-4">
+ <h2 className="
+ text-primary-800 font-semibold
+ text-heading1 sm:text-heading3
+ mb-[64px] sm:mb-[32px] mobile:mb-[24px]
+ ">
+ PPMC
+ </h2>
+ <div className="
+ grid grid-cols-3 gap-x-4 gap-y-4 mobile:gap-y-3 sm:grid-cols-2
mobile:grid-cols-1
+ z-10 max-w-[1200px] mx-auto relative">
+ {ppmcInfo.data.map((ppmc: ContributorInfo) => <PersonCard
info={ppmc}/>)}
+ </div>
+ </div>
+ );
+}
diff --git a/src/components/Team/PersonCard.tsx
b/src/components/Team/PersonCard.tsx
new file mode 100644
index 000000000..2d3a26aeb
--- /dev/null
+++ b/src/components/Team/PersonCard.tsx
@@ -0,0 +1,45 @@
+import React from "react";
+import { ContributorInfo } from './types';
+
+const dateMapper = {
+ '01': 'Jan',
+ '02': 'Feb',
+ '03': 'Mar',
+ '04': 'Apr',
+ '05': 'May',
+ '06': 'Jun',
+ '07': 'Jul',
+ '08': 'Aug',
+ '09': 'Sept',
+ '10': 'Oct',
+ '11': 'Nov',
+ '12': 'Dec'
+}
+
+function dateFormatter(date) {
+ const [year, month, day] = date.split('/');
+ return `${dateMapper[month]} ${day}, ${year}`;
+}
+
+export function PersonCard(props: { info: ContributorInfo}) {
+ const { info } = props;
+ const { realName, githubId, githubLink, avatar, date } = info;
+ return (
+ <a
+ className="py-[25px] no-underline hover:no-underline px-4
rounded-[10px] transition bg-white shadow-lower hover:shadow-high flex
items-center text-neutral-600 hover:text-primary-500"
+ href={githubLink}
+ target="_blank"
+ >
+ <img
+ className="w-[100px] h-[100px] mr-4 rounded-full bg-primary-500
shrink-0 uppercase flex justify-center items-center overflow-hidden text-white"
+ src={avatar}
+ alt={githubId}
+ />
+ <div className="flex flex-col space-y-1 h-fit">
+ <span className="text-heading4">{realName}</span>
+ <span className="text-label12 text-neutral-500">{githubId}</span>
+ { date && <span className="text-body-sm
text-neutral-500">{dateFormatter(date)}</span>}
+ </div>
+ </a>
+ );
+ }
diff --git a/src/components/Team/TeampageBG.tsx
b/src/components/Team/TeampageBG.tsx
new file mode 100644
index 000000000..229c17665
--- /dev/null
+++ b/src/components/Team/TeampageBG.tsx
@@ -0,0 +1,71 @@
+import React from "react";
+import HeaderBGWS from "@site/static/img/Team/HeaderBG-ws.png";
+import HeaderBGTablet from "@site/static/img/Team/HeaderBG-tablet.png";
+import HeaderBGMobile from "@site/static/img/Team/HeaderBG-mobile.png";
+import BottomBGWS from '@site/static/img/Team/BottomBG-ws.png';
+import BottomBGTablet from '@site/static/img/Team/BottomBG-tablet.png';
+import BottomBGMobile from '@site/static/img/Team/BottomBG-mobile.png';
+
+export function TeampageHeaderBG() {
+ return (
+ <div>
+ <>
+ <img
+ src={HeaderBGWS}
+ className="
+ absolute top-[0px] left-[0px]
+ h-[580px] w-screen
+ block sm:hidden
+ "
+ />
+ <img
+ src={HeaderBGTablet}
+ className="
+ absolute top-[0px] left-[0px]
+ h-[438px] w-screen
+ hidden sm:block mobile:hidden
+ "
+ />
+ <img
+ src={HeaderBGMobile}
+ className="
+ absolute top-[0px] left-[0px]
+ h-[456px] w-screen
+ hidden mobile:block
+ "
+ />
+ </>
+ </div>
+ );
+}
+
+export function TeampageBottomBG() {
+ return (
+ <div>
+ <img
+ src={BottomBGWS}
+ className="
+ absolute top-[-125px] left-[-15vw]
+ h-[1205px] min-w-[100vw]
+ block sm:hidden
+ "
+ />
+ <img
+ src={BottomBGTablet}
+ className="
+ absolute top-[-95px] left-[-15vw]
+ h-[1663px] min-w-[100vw]
+ hidden sm:block mobile:hidden
+ "
+ />
+ <img
+ src={BottomBGMobile}
+ className="
+ absolute top-[-31px] left-[-5vw]
+ h-[1768px] min-w-[100vw]
+ hidden mobile:block
+ "
+ />
+ </div>
+ )
+}
diff --git a/src/components/Team/Title.tsx b/src/components/Team/Title.tsx
new file mode 100644
index 000000000..04a89bf65
--- /dev/null
+++ b/src/components/Team/Title.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+
+export function Title() {
+ return (
+ <div className="flex flex-col w-[100%]
+ h-[232px] sm:h-[132px] mobile:h-[116px] justify-center">
+ <h3
+ className="text-heading0 sm:text-heading2 text-primary-500"
+ >
+ Team
+ </h3>
+ <p
+ className="text-label24 sm:text-label16Lake text-primary-800"
+ >
+ We deeply appreciate your contribution!
+ </p>
+ </div>
+ );
+}
diff --git a/src/components/Team/types.ts b/src/components/Team/types.ts
new file mode 100644
index 000000000..33fd6946e
--- /dev/null
+++ b/src/components/Team/types.ts
@@ -0,0 +1,8 @@
+export interface ContributorInfo {
+ realName: string,
+ githubId: string,
+ email?: string,
+ avatar: string,
+ githubLink: string,
+ date?: string
+}
\ No newline at end of file
diff --git a/src/pages/team/index.js b/src/pages/team/index.js
new file mode 100644
index 000000000..3e8c152d9
--- /dev/null
+++ b/src/pages/team/index.js
@@ -0,0 +1,33 @@
+import React from 'react';
+import Layout from '@theme/Layout';
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import { TeampageHeaderBG, TeampageBottomBG } from
'@site/src/components/Team/TeampageBG';
+import { Title } from '@site/src/components/Team/Title';
+import { PPMC } from '@site/src/components/Team/PPMC';
+import { Committer } from '@site/src/components/Team/Committer';
+import { Contributor } from '@site/src/components/Team/Contributor';
+
+export default function Team() {
+ const { siteConfig } = useDocusaurusContext();
+ return (
+ <Layout
+ title={`${siteConfig.title}`}
+ description="Apache DevLake is an open-source dev data platform that
ingests, analyzes, and visualizes the fragmented data from DevOps tools to
distill insights for engineering productivity.">
+ <div className='bg-[#f8f8f8]'>
+ <div className='mx-auto bg-white max-w-[100vw] overflow-hidden
relative'>
+ <TeampageHeaderBG />
+ <main
+ className='
+ text-start w-[70%] max-w-[1200px] sm:max-w-[650px] mobile:w-[90%]
+ relative mx-auto
+ '>
+ <Title />
+ <PPMC />
+ <Committer />
+ <Contributor />
+ </main>
+ </div>
+ </div>
+ </Layout>
+ );
+}
diff --git a/static/icon/Stroke-Down.png b/static/icon/Stroke-Down.png
new file mode 100644
index 000000000..108bd19f0
Binary files /dev/null and b/static/icon/Stroke-Down.png differ
diff --git a/static/icon/Stroke-Up.png b/static/icon/Stroke-Up.png
new file mode 100644
index 000000000..3a3cf74d2
Binary files /dev/null and b/static/icon/Stroke-Up.png differ
diff --git a/static/img/Team/BottomBG-mobile.png
b/static/img/Team/BottomBG-mobile.png
new file mode 100644
index 000000000..a7eaca59d
Binary files /dev/null and b/static/img/Team/BottomBG-mobile.png differ
diff --git a/static/img/Team/BottomBG-tablet.png
b/static/img/Team/BottomBG-tablet.png
new file mode 100644
index 000000000..99490f849
Binary files /dev/null and b/static/img/Team/BottomBG-tablet.png differ
diff --git a/static/img/Team/BottomBG-ws.png b/static/img/Team/BottomBG-ws.png
new file mode 100644
index 000000000..537049b44
Binary files /dev/null and b/static/img/Team/BottomBG-ws.png differ
diff --git a/static/img/Team/Frame 308.png b/static/img/Team/Frame 308.png
new file mode 100644
index 000000000..8f4a81334
Binary files /dev/null and b/static/img/Team/Frame 308.png differ
diff --git a/static/img/Team/HeaderBG-mobile.png
b/static/img/Team/HeaderBG-mobile.png
new file mode 100644
index 000000000..6463e7149
Binary files /dev/null and b/static/img/Team/HeaderBG-mobile.png differ
diff --git a/static/img/Team/HeaderBG-tablet.png
b/static/img/Team/HeaderBG-tablet.png
new file mode 100644
index 000000000..71eb7227b
Binary files /dev/null and b/static/img/Team/HeaderBG-tablet.png differ
diff --git a/static/img/Team/HeaderBG-ws.png b/static/img/Team/HeaderBG-ws.png
new file mode 100644
index 000000000..b88018ac3
Binary files /dev/null and b/static/img/Team/HeaderBG-ws.png differ
diff --git a/tailwind.config.js b/tailwind.config.js
index 447589b84..d806c5441 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -5,6 +5,7 @@ tailwindConfig.theme.extend.fontSize = {
...tailwindConfig.theme.extend.fontSize,
label40: ['40px', { lineHeight : '56px' }],
label20: ['20px', { lineHeight: '30px' }],
+ label12: ['12px', { lineHeight: '15px' }],
label16Lake: ['16px', { lineHeight: '22px' }]
}
module.exports = tailwindConfig;