diff --git a/website/data/team.yml b/website/data/team.yml
new file mode 100644
index 000000000..e1de5872a
--- /dev/null
+++ b/website/data/team.yml
@@ -0,0 +1,84 @@
+admons:
+ - name: Trent Earl
+ github: trentearl
+ role: founder
+ - name: John Wilkinson
+ github: jmwilkinson
+ role: founder
+ - name: Juan Picado
+ github: juanpicado
+ twitter: jotadeveloper
+ role: admin/core
+ - name: Ayush Sharma
+ github: ayusharma
+ twitter: ayusharma_
+ role: admin/core
+ - name: Sergio Hg
+ github: sergiohgz
+ role: core
+ - name: Meeeeow
+ github: Meeeeow
+ role: core
+maintainers:
+ - name: Verdaccio
+ github: verdacciobot
+ twitter: verdaccio_npm
+ role: bot
+ - name: Roger Meier
+ github: bufferoverflow
+ active: true
+ - name: Cameron Little
+ github: apexskier
+ active: true
+ - name: Priscila
+ github: priscilawebdev
+ twitter: priscilawebdev
+ active: true
+ - name: Keli Grubb
+ github: kgrubb
+ active: true
+ - name: Lucius Gaitán
+ github: lgaitan
+ active: true
+ - name: Diego Louzán
+ github: dlouzan
+ active: true
+ - name: Dharmender-Singh
+ github: Dharmender-Singh
+ active: true
+translators:
+ spanish:
+ - name: María Eugenia Lucena
+ crowdin: marugy99
+ role: proofreader
+ - name: Samuel Miller
+ crowdin: SamuelLMiller
+ role: translator
+ - name: isabella394
+ crowdin: isabella394
+ role: translator
+ - name: Alejandro Estévez
+ crowdin: acrywhif
+ role: translator
+ chinese:
+ - name: sunray
+ crowdin: sunray
+ role: proofreader
+ - name: aafeng
+ crowdin: aafeng
+ role: proofreader
+ - name: susanli3769
+ crowdin: emmali73
+ role: translator
+ - name: Samuel Miller
+ crowdin: SamuelLMiller
+ role: translator
+ - name: Aaron Li
+ crowdin: AaronLi
+ role: translator
+ - name: victory
+ crowdin: victory622
+ role: translator
+ - name: breathewind
+ crowdin: breathewind
+ role: translator
diff --git a/website/i18n/en.json b/website/i18n/en.json
index 386e5df7e..03553d103 100644
--- a/website/i18n/en.json
+++ b/website/i18n/en.json
@@ -35,9 +35,11 @@
"what-is-verdaccio": "What is Verdaccio?",
"windows": "Installing As a Windows Service",
"Docs": "Docs",
- "Help": "Help",
"Blog": "Blog",
+ "Help": "Help",
"GitHub": "GitHub",
+ "Team": "Team",
+ "Donate": "Donate",
"Introduction": "Introduction",
"Configuration": "Configuration",
"Server": "Server",
diff --git a/website/package.json b/website/package.json
index 9522f30b9..43c3c102a 100644
--- a/website/package.json
+++ b/website/package.json
@@ -11,6 +11,7 @@
},
"license": "MIT",
"devDependencies": {
- "docusaurus": "1.3.2"
+ "docusaurus": "1.3.2",
+ "js-yaml": "^3.12.0"
}
}
diff --git a/website/pages/en/team.js b/website/pages/en/team.js
new file mode 100644
index 000000000..7144130e9
--- /dev/null
+++ b/website/pages/en/team.js
@@ -0,0 +1,179 @@
+const React = require('react');
+const CompLibrary = require('../../core/CompLibrary.js');
+const Container = CompLibrary.Container;
+const siteConfig = require(process.cwd() + '/siteConfig.js');
+
+const NetworkLink = props => {
+ if (props.text) {
+ return (
+
+ );
+ } else return null;
+};
+
+const Member = ({ member, imageSize }) => {
+ const { github, twitter, name, crowdin, role, active } = member;
+ const avatarUrl = `https://avatars.githubusercontent.com/${github}`;
+ const twitterUrl = `https://twitter.com/${twitter}`;
+ const githubUrl = `https://github.com/${github}`;
+ const crowdinUrl = `https://crowdin.com/profile/${crowdin}`;
+ const size = imageSize || 100;
+
+ // to disable an member it has to be strictly false
+ if (!active && active === false) {
+ return null;
+ }
+
+ return (
+
+
+
+
+ {name}
+
+
+ {role ? `${role}` : ''}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const MemberSection = props => {
+ return (
+
+
{props.title}
+
+ {props.members.map(member => {
+ return ;
+ })}
+
+
+ );
+};
+
+
+
+const TranslatorMemberSections = props => {
+ return (
+
+
{props.title}
+
+
+
+ {props.translator.map(member => {
+ return ;
+ })}
+
+
+
+
+ );
+};
+
+const LanguagesGroups = props => {
+ const languages = Object.keys(props.languages);
+
+ return (
+
+
{props.title}
+
+ {languages.map((function(language) {
+ const lang = props.languages[language];
+
+ return ;
+ }))}
+
+
+ );
+};
+
+const CrowdingTranslators = props => {
+ return (
+
+
+ Crowding Translators
+
+
+
+
+
+ );
+};
+
+const BannerTitle = () => {
+ return (
+
+ Team Members
+
+ );
+};
+
+
+class Team extends React.Component {
+ render() {
+ const {admons, maintainers, translators} = siteConfig.team;
+
+ return (
+
+ );
+ }
+}
+
+module.exports = Team;
diff --git a/website/pages/en/users.js b/website/pages/en/users.js
index b4794d333..bb92f9b3c 100644
--- a/website/pages/en/users.js
+++ b/website/pages/en/users.js
@@ -1,12 +1,4 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
const React = require('react');
-
const CompLibrary = require('../../core/CompLibrary.js');
const Container = CompLibrary.Container;
const translate = require("../../server/translate.js").translate;
diff --git a/website/siteConfig.js b/website/siteConfig.js
index 185cb4cb9..c24171bb6 100644
--- a/website/siteConfig.js
+++ b/website/siteConfig.js
@@ -1,11 +1,7 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-/* List of projects/orgs using your project for the users page */
+const {loadYaml} = require('./utils');
+
+const team = loadYaml("./data/team.yml");
const users = [
{
caption: "Filiosoft",
@@ -69,11 +65,15 @@ const siteConfig = {
projectName: 'verdaccio',
headerLinks: [
{ doc: 'installation', label: 'Docs'},
- { page: 'help', label: 'Help'},
{ href: "https://medium.com/verdaccio", label: 'Blog'},
- { href: "https://github.com/verdaccio", label: "GitHub" }
+ { page: 'help', label: 'Help'},
+ { href: "https://github.com/verdaccio", label: "GitHub" },
+ { search: true },
+ { page: 'team', label: 'Team'},
+ { href: "https://opencollective.com/verdaccio", label: "Donate" },
],
users,
+ team,
headerIcon: 'img/verdaccio-tiny.png',
footerIcon: 'img/verdaccio-blackwhite.png',
favicon: 'img/favicon.ico',
@@ -82,7 +82,6 @@ const siteConfig = {
secondaryColor: '#205C3B',
},
translationRecruitingLink: 'https://crowdin.com/project/verdaccio',
- // This copyright info is used in /core/Footer.js and blog rss/atom feeds.
copyright:
'Copyright © ' + new Date().getFullYear() + ' Verdaccio community',
// organizationName: 'deltice', // or set an env variable ORGANIZATION_NAME
@@ -105,7 +104,6 @@ const siteConfig = {
stylesheets: [
'/css/code-blocks-buttons.css',
],
- // You may provide arbitrary config keys to be used as needed by your template.
repoUrl: 'https://github.com/verdaccio/verdaccio',
cleanUrl: true,
scrollToTop: true,
diff --git a/website/static/css/custom.css b/website/static/css/custom.css
index cf80d745b..83c79af5f 100644
--- a/website/static/css/custom.css
+++ b/website/static/css/custom.css
@@ -1,22 +1,13 @@
-/* your custom css */
-
-/*.mainContainer .wrapper code {*/
- /*padding: 2px;*/
- /*font-family: inherit;*/
-/*}*/
-
.mainContainer .wrapper a,
.inner .projectIntro a {
- background-color: rgba(10, 78, 31, 0.15);
color: #1a1a1a;
transition: all 0.25s ease-out;
- text-decoration: underline;
+ text-decoration: none;
}
.mainContainer .wrapper a:hover,
.inner .projectIntro a:hover {
- background-color: rgba(10, 78, 31, 0.35);
- text-decoration: none !important;
+ text-decoration: underline;
}
.feature-section .blockContent {
@@ -47,17 +38,92 @@
margin: 0 auto !important;
}
-/*@media only screen and (min-device-width: 360px) and (max-device-width: 736px) {*/
-/*}*/
+/** team **/
-/*@media only screen and (min-width: 1024px) {*/
-/*}*/
+.banner_members_title {
+ margin-top: 0;
+}
-/*@media only screen and (max-width: 1023px) {*/
-/*}*/
+.team_container a,
+.team_container a:hover {
+ font-size: 80%;
+ text-decoration: none;
+}
-/*@media only screen and (min-width: 1400px) {*/
-/*}*/
+.member_group {
+ display: flex;
+ flex-wrap: wrap;
+}
+
+.member_media_object {
+ width: 15%;
+ box-sizing: border-box;
+ text-align: center;
+}
+
+
+.member_media_object .team_role {
+ font-size: 80%;
+}
+
+@media (min-width: 1281px) {
+ .member_media_object {
+ width: 15%
+ }
+}
+
+@media (min-width: 1025px) and (max-width:1280px) {
+ .member_media_object {
+ width: 33.3%
+ }
+}
+
+@media (min-width: 768px) and (max-width:1024px) {
+ .member_media_object {
+ width: 50%
+ }
+}
+
+@media (min-width: 768px) and (max-width:1024px) and (orientation:landscape) {
+ .member_media_object {
+ width: 50%
+ }
+}
+
+@media (min-width: 481px) and (max-width:767px) {
+ .member_media_object {
+ width: 100%
+ }
+}
+
+@media (min-width: 320px) and (max-width:480px) {
+ .member_media_object {
+ width: 100%
+ }
+}
+
+.member_section {
+ width: 100%;
+}
+
+.member_section .language_title {
+ text-transform: capitalize;
+ margin-bottom: 5px;
+ margin-top: 10px;
+}
+
+.member_info {
+ line-height: 1.7;
+}
+
+.member_info > div {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.member_avatar > img {
+ border-radius: 50px;
+ border: 1px solid #4b5e40;
+}
-/*@media only screen and (min-width: 1500px) {*/
-/*}*/
diff --git a/website/static/svg/social/crowdin.ico b/website/static/svg/social/crowdin.ico
new file mode 100644
index 000000000..d5486c16b
Binary files /dev/null and b/website/static/svg/social/crowdin.ico differ
diff --git a/website/static/svg/social/crowdin.png b/website/static/svg/social/crowdin.png
new file mode 100644
index 000000000..39e193c1d
Binary files /dev/null and b/website/static/svg/social/crowdin.png differ
diff --git a/website/static/svg/social/github.svg b/website/static/svg/social/github.svg
new file mode 100644
index 000000000..146f66fcf
--- /dev/null
+++ b/website/static/svg/social/github.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/static/svg/social/twitter.svg b/website/static/svg/social/twitter.svg
new file mode 100644
index 000000000..6225a6c0b
--- /dev/null
+++ b/website/static/svg/social/twitter.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/website/utils.js b/website/utils.js
new file mode 100644
index 000000000..148850dfc
--- /dev/null
+++ b/website/utils.js
@@ -0,0 +1,11 @@
+const path = require("path");
+const fs = require("fs");
+const parseYaml = require("js-yaml").safeLoad;
+
+function loadYaml(fsPath) {
+ return parseYaml(fs.readFileSync(path.join(__dirname, fsPath), "utf8"));
+}
+
+module.exports = {
+ loadYaml
+};
diff --git a/website/yarn.lock b/website/yarn.lock
index 9cf75b4f0..1f62f5d9c 100644
Binary files a/website/yarn.lock and b/website/yarn.lock differ