From 5840eb9d5e9a89343bdef9c4331b89f817251160 Mon Sep 17 00:00:00 2001 From: "Juan Picado @jotadeveloper" Date: Sat, 4 Aug 2018 17:09:03 +0200 Subject: [PATCH] docs(website): add team member page it might be incomplete --- website/data/team.yml | 84 ++++++++++++ website/i18n/en.json | 4 +- website/package.json | 3 +- website/pages/en/team.js | 179 ++++++++++++++++++++++++++ website/pages/en/users.js | 8 -- website/siteConfig.js | 20 ++- website/static/css/custom.css | 108 +++++++++++++--- website/static/svg/social/crowdin.ico | Bin 0 -> 4286 bytes website/static/svg/social/crowdin.png | Bin 0 -> 24013 bytes website/static/svg/social/github.svg | 3 + website/static/svg/social/twitter.svg | 6 + website/utils.js | 11 ++ website/yarn.lock | Bin 170961 -> 171167 bytes 13 files changed, 384 insertions(+), 42 deletions(-) create mode 100644 website/data/team.yml create mode 100644 website/pages/en/team.js create mode 100644 website/static/svg/social/crowdin.ico create mode 100644 website/static/svg/social/crowdin.png create mode 100644 website/static/svg/social/github.svg create mode 100644 website/static/svg/social/twitter.svg create mode 100644 website/utils.js 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 ( +
+ {props.iconAlt} + + {props.text} + +
+ ); + } 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}` : ''} +
+
+
+
+ {{name}} +
+
+ + + +
+
+ ); +}; + +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 0000000000000000000000000000000000000000..d5486c16b2269178c7f61c0ffa393cafb595b7fb GIT binary patch literal 4286 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 literal 0 HcmV?d00001 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 9cf75b4f046281e26585780decb8ae4917ddca3e..1f62f5d9cf8895de0abc85a69ae31777b615a473 100644 GIT binary patch delta 113 zcmcb(oooJ1u7)j)+?67RMtTNTTnY+hsYS(^`FRRT#(IX6Kbq-G_o`$R)dx!Im84fG zrzWPRn3