diff --git a/nuxt.config.ts b/nuxt.config.ts index 0f2d7d4..30dc2d9 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -53,8 +53,17 @@ const config: Configuration = { modules: [ 'portal-vue/nuxt', - 'cookie-universal-nuxt' + 'cookie-universal-nuxt', + 'nuxt-fontawesome', ], + fontawesome: { + imports: [ + { + set: '@fortawesome/free-solid-svg-icons', + icons: ['fas'] + } + ] + }, plugins: [ { src: '@/plugins/vuelidate' }, diff --git a/package.json b/package.json index ba96883..74cd5d2 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,9 @@ "test": "jest --config test/jest.config.js" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.32", + "@fortawesome/free-solid-svg-icons": "^5.15.1", + "@fortawesome/vue-fontawesome": "^2.0.0", "@nuxt/typescript-build": "^0.6.6", "@nuxt/typescript-runtime": "^0.4.6", "@nuxtjs/google-analytics": "^2.2.3", @@ -21,6 +24,7 @@ "cookie-universal-nuxt": "^2.1.3", "normalize.css": "^8.0.1", "nuxt": "^2.12.2", + "nuxt-fontawesome": "^0.4.0", "portal-vue": "^2.1.7", "postcss-custom-properties": "^9.1.1", "postcss-nested": "^4.2.1", diff --git a/src/components/AboutTeam.vue b/src/components/AboutTeam.vue new file mode 100644 index 0000000..a3f8825 --- /dev/null +++ b/src/components/AboutTeam.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/data/about_team_list.ts b/src/data/about_team_list.ts new file mode 100644 index 0000000..57ebd45 --- /dev/null +++ b/src/data/about_team_list.ts @@ -0,0 +1,387 @@ +/** + * Shuffles array in place. + * @param {Array} a items The array containing the items. + */ + +function shuffle (a:any[]) { + a = a.concat([]) + let j, x, i + for (i = a.length; i; i--) { + j = Math.floor(Math.random() * i) + x = a[i - 1] + a[i - 1] = a[j] + a[j] = x + } + return a +} + + +let team = [{ + name: 'Evan You', + title: 'Benevolent Dictator For Life', + city: 'Jersey City, NJ, USA', + languages: ['zh', 'en'], + github: 'yyx990803', + twitter: 'youyuxi', + work: { + role: 'Creator', + org: 'Vue.js' + }, + reposOfficial: [ + 'vuejs/*', 'vuejs-templates/*' + ], + links: [ + 'https://www.patreon.com/evanyou' + ] +}] + +team = team.concat(shuffle([ + { + name: 'Eduardo', + title: 'Real-Time Rerouter', + city: 'Paris, France', + languages: ['es', 'fr', 'en'], + github: 'posva', + twitter: 'posva', + work: { + role: 'Freelance Developer & Consultant', + }, + reposOfficial: [ + 'vuefire', 'vue-router' + ], + reposPersonal: [ + 'vuex-mock-store', 'vue-promised', 'vue-motion' + ], + links: [ + 'https://www.patreon.com/posva' + ] + }, + { + name: 'Sodatea', + city: 'Hangzhou, China', + languages: ['zh', 'en'], + github: 'sodatea', + twitter: 'haoqunjiang', + reposOfficial: [ + 'vue-cli', 'vue-loader' + ] + }, + { + name: 'Pine Wu', + city: 'Shanghai, China', + languages: ['zh', 'en', 'jp'], + github: 'octref', + twitter: 'octref', + work: { + role: 'Nomad' + }, + reposOfficial: [ + 'vetur' + ] + }, + { + name: 'Jinjiang', + city: 'Singapore', + languages: ['zh', 'en'], + github: 'jinjiang', + twitter: 'zhaojinjiang', + reposOfficial: [ + 'cn.vuejs.org', 'vue-docs-zh-cn' + ], + reposPersonal: [ + 'vue-a11y-utils', 'vue-mark-display', 'mark2slides', 'vue-keyboard-over' + ] + }, + { + name: 'Katashin', + title: 'One of a Type State Manager', + city: 'Singapore', + languages: ['jp', 'en'], + work: { + role: 'Software Engineer', + org: 'ClassDo', + orgUrl: 'https://classdo.com' + }, + github: 'ktsn', + twitter: 'ktsn', + reposOfficial: [ + 'vuex', 'vue-class-component' + ], + reposPersonal: [ + 'vue-designer' + ] + }, + { + name: 'Kazupon', + title: 'Validated Internationalizing Missionary', + city: 'Tokyo, Japan', + languages: ['jp', 'en'], + github: 'kazupon', + twitter: 'kazu_pon', + work: { + role: 'Engineer', + org: 'PLAID, Inc.', + orgUrl: 'https://plaid.co.jp' + }, + reposOfficial: [ + 'vuejs.org', 'jp.vuejs.org' + ], + reposPersonal: [ + 'vue-i18n', 'vue-cli-plugin-i18n', 'vue-i18n-loader', 'eslint-plugin-vue-i18n', 'vue-i18n-extensions', 'vue-cli-plugin-p11n' + ], + links: [ + 'https://www.patreon.com/kazupon' + ] + }, + { + name: 'Rahul Kadyan', + title: 'Ecosystem Glue Chemist', + city: 'Bangalore, India', + languages: ['hi', 'en'], + work: { + role: 'Software Engineer', + org: 'Myntra', + orgUrl: 'https://www.myntra.com/' + }, + github: 'znck', + twitter: 'znck0', + reposOfficial: [ + 'rollup-plugin-vue', 'vue-issue-helper' + ], + reposPersonal: [ + 'keynote', 'bootstrap-for-vue', 'vue-interop' + ], + links: [ + 'https://znck.me', 'https://www.codementor.io/znck' + ] + }, + { + name: 'Linusborg', + title: 'Hive-Mind Community Wrangler (Probably a Bot)', + city: 'Mannheim, Germany', + languages: ['de', 'en'], + github: 'LinusBorg', + twitter: 'Linus_Borg', + reposOfficial: [ + 'vuejs/*' + ], + reposPersonal: [ + 'portal-vue' + ], + links: [ + 'https://forum.vuejs.org/' + ] + }, + { + name: 'Guillaume Chau', + title: 'Client-Server Astronaut', + city: 'Lyon, France', + languages: ['fr', 'en'], + github: 'Akryum', + twitter: 'Akryum', + work: { + role: 'Frontend Developer', + org: 'Livestorm', + orgUrl: 'https://livestorm.co/' + }, + reposOfficial: [ + 'vue-devtools', + 'vue-cli', + 'vue-curated' + ], + reposPersonal: [ + 'vue-apollo', 'vue-meteor', 'vue-virtual-scroller', 'v-tooltip' + ], + links: [ + 'http://patreon.com/akryum' + ] + }, + { + name: 'Sarah Drasner', + city: 'Denver, CO, USA', + languages: ['en'], + work: { + role: 'Head of Developer Experience', + org: 'Netlify', + orgUrl: 'https://www.netlify.com/' + }, + github: 'sdras', + twitter: 'sarah_edo', + codepen: 'sdras', + reposOfficial: [ + 'vuejs.org' + ], + reposPersonal: [ + 'intro-to-vue', 'vue-vscode-snippets', 'vue-vscode-extensionpack', 'sample-vue-shop' + ], + links: [ + 'https://sarah.dev/' + ] + }, + { + name: 'Damian Dulisz', + title: 'Dark Mage of Plugins, News, and Confs', + city: 'Wrocław, Poland', + languages: ['pl', 'en'], + github: 'shentao', + twitter: 'DamianDulisz', + work: { + role: 'Consultant' + }, + reposOfficial: [ + 'news.vuejs.org' + ], + reposPersonal: [ + 'shentao/vue-multiselect', + 'shentao/vue-global-events' + ] + }, + { + name: 'Michał Sajnóg', + city: 'Poznań, Poland', + languages: ['pl', 'en'], + github: 'michalsnik', + twitter: 'michalsnik', + work: { + role: 'Senior Frontend Developer / Team Leader', + org: 'Netguru', + orgUrl: 'https://netguru.co/' + }, + reposOfficial: [ + 'eslint-plugin-vue', + 'vue-devtools' + ], + reposPersonal: [ + 'vue-computed-helpers', 'vue-content-placeholders' + ] + }, + { + name: 'GU Yiling', + city: 'Shanghai, China', + languages: ['zh', 'en'], + work: { + role: 'Senior web developer', + org: 'Baidu, inc.', + orgUrl: 'https://www.baidu.com/' + }, + github: 'Justineo', + twitter: '_justineo', + reposOfficial: [ + 'vue', 'cn.vuejs.org' + ], + reposPersonal: [ + 'Justineo/vue-awesome', 'ecomfe/vue-echarts', 'ecomfe/veui' + ] + }, + { + name: 'ULIVZ', + city: 'Hangzhou, China', + languages: ['zh', 'en'], + work: { + role: 'Senior Frontend Developer', + org: 'AntFinancial', + orgUrl: 'https://www.antfin.com' + }, + github: 'ulivz', + twitter: '_ulivz', + reposOfficial: [ + 'vuepress' + ] + }, + { + name: 'Phan An', + title: 'Backend Designer & Process Poet', + city: 'Munich, Germany', + languages: ['vi', 'en'], + github: 'phanan', + twitter: 'notphanan', + work: { + role: 'Engineering Team Lead', + org: 'InterNations', + orgUrl: 'https://www.internations.org/' + }, + reposOfficial: [ + 'vuejs.org' + ], + reposPersonal: [ + 'vuequery', 'vue-google-signin-button' + ], + links: [ + 'https://vi.vuejs.org', + 'https://phanan.net/' + ] + }, + { + name: 'Natalia Tepluhina', + title: 'Fox Tech Guru', + city: 'Kyiv, Ukraine', + languages: ['uk', 'ru', 'en'], + reposOfficial: [ + 'vuejs.org', + 'vue-cli' + ], + work: { + role: 'Senior Frontend Engineer', + org: 'GitLab', + orgUrl: 'https://gitlab.com/' + }, + github: 'NataliaTepluhina', + twitter: 'N_Tepluhina', + }, + { + name: 'Yosuke Ota', + city: 'Kanagawa, Japan', + languages: ['jp'], + github: 'ota-meshi', + twitter: 'omoteota', + work: { + role: 'Lead Web Engineer', + org: 'Future Corporation', + orgUrl: 'https://www.future.co.jp/' + }, + reposOfficial: [ + 'eslint-plugin-vue' + ], + }, + { + name: 'Ben Hong', + city: 'Washington, DC, USA', + languages: ['en', 'zh'], + work: { + role: 'Developer Experience (DX) Engineer', + org: 'Cypress.io', + }, + reposOfficial: [ + 'vuejs.org', + 'vuepress', + 'vuejs/events' + ], + github: 'bencodezen', + twitter: 'bencodezen', + links: [ + 'https://bencodezen.io/' + ] + }, + { + name: 'Kia King Ishii', + title: 'The optimist web designer/developer', + city: 'Kanagawa, Japan', + languages: ['en', 'jp'], + work: { + role: 'Tech Talent', + org: 'Global Brain', + orgUrl: 'https://globalbrains.com/' + }, + github: 'kiaking', + twitter: 'KiaKing85', + reposOfficial: [ + 'vuex' + ], + reposPersonal: [ + 'vuex-orm/*' + ] + } +])) + + +export default team; diff --git a/src/pages/about/index.vue b/src/pages/about/index.vue index f755751..db40058 100644 --- a/src/pages/about/index.vue +++ b/src/pages/about/index.vue @@ -2,6 +2,7 @@ + @@ -10,12 +11,14 @@ import Vue from 'vue' import AppPage from '@/components/AppPage.vue' import AboutHero from '@/components/AboutHero.vue' import AboutDescription from '@/components/AboutDescription.vue' +import AboutTeam from '@/components/AboutTeam.vue' export default Vue.extend({ components: { AppPage, AboutHero, - AboutDescription + AboutDescription, + AboutTeam }, head (): object { diff --git a/yarn.lock b/yarn.lock index fb1c36c..765494c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -835,6 +835,35 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@fortawesome/fontawesome-common-types@^0.2.32": + version "0.2.32" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz#3436795d5684f22742989bfa08f46f50f516f259" + integrity sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w== + +"@fortawesome/fontawesome-svg-core@^1.2.12", "@fortawesome/fontawesome-svg-core@^1.2.32": + version "1.2.32" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz#da092bfc7266aa274be8604de610d7115f9ba6cf" + integrity sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.32" + +"@fortawesome/free-solid-svg-icons@^5.15.1": + version "5.15.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz#e1432676ddd43108b41197fee9f86d910ad458ef" + integrity sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.32" + +"@fortawesome/vue-fontawesome@^0.1.4": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.10.tgz#eeeec1e4e8850bed0468f938292b06cda793bf34" + integrity sha512-b2+SLF31h32LSepVcXe+BQ63yvbq5qmTCy4KfFogCYm2bn68H5sDWUnX+U7MBqnM2aeEk9M7xSoqGnu+wSdY6w== + +"@fortawesome/vue-fontawesome@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.0.tgz#63da3e459147cebb0a8d58eed81d6071db9f5973" + integrity sha512-N3VKw7KzRfOm8hShUVldpinlm13HpvLBQgT63QS+aCrIRLwjoEUXY5Rcmttbfb6HkzZaeqjLqd/aZCQ53UjQpg== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" @@ -7322,6 +7351,14 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nuxt-fontawesome@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/nuxt-fontawesome/-/nuxt-fontawesome-0.4.0.tgz#e1ea0cdda9ec6785739a86e9e3d42f62a8c10443" + integrity sha512-4oHIot/WLUBFM7o944EQks7WmntD/YsLxZ+g9mJjY9pHw1FJZBaD7Bd+cDsXvl3h/0/f87QwIXf/AA+vOIY0Ag== + dependencies: + "@fortawesome/fontawesome-svg-core" "^1.2.12" + "@fortawesome/vue-fontawesome" "^0.1.4" + nuxt@^2.12.2: version "2.12.2" resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.12.2.tgz#959baa919bfef4adcd9e88f84bc948a49a03edd8"