Team.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. <template>
  2. <div class="app">
  3. <page-metadata title="Team" />
  4. <main-header />
  5. <div class="container">
  6. <div class="content-wrapper">
  7. <h1 class="page-title has-text-centered">Team</h1>
  8. <h2 class="has-text-centered">Current Team</h2>
  9. <div class="group">
  10. <div
  11. v-for="member in currentTeam"
  12. :key="member.name"
  13. class="card"
  14. >
  15. <header class="card-header">
  16. <profile-picture
  17. :avatar="member.avatar"
  18. :name="member.name"
  19. />
  20. <div>
  21. <strong>{{ member.name }}</strong>
  22. <span v-if="member.active"
  23. >Active: {{ member.active }}</span
  24. >
  25. </div>
  26. <a
  27. v-if="member.link"
  28. :href="member.link"
  29. target="_blank"
  30. class="material-icons"
  31. >
  32. link
  33. </a>
  34. </header>
  35. <div class="card-content">
  36. <div
  37. v-if="member.bio"
  38. class="bio"
  39. v-html="member.bio"
  40. ></div>
  41. <div v-if="member.projects" class="projects">
  42. <a
  43. v-for="project in member.projects"
  44. :key="project"
  45. :href="
  46. 'https://github.com/Musare/' +
  47. project +
  48. '/commits?author=' +
  49. member.github
  50. "
  51. target="_blank"
  52. >
  53. {{ project }}
  54. </a>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. <h3 class="has-text-centered">Previous Team</h3>
  60. <div class="group">
  61. <div
  62. v-for="member in previousTeam"
  63. :key="member.name"
  64. class="card"
  65. >
  66. <header class="card-header">
  67. <profile-picture
  68. :avatar="{ type: 'text', color: 'grey' }"
  69. :name="member.name"
  70. />
  71. <div>
  72. <strong>{{ member.name }}</strong>
  73. <span v-if="member.active"
  74. >Active: {{ member.active }}</span
  75. >
  76. </div>
  77. <a
  78. v-if="member.link"
  79. :href="member.link"
  80. target="_blank"
  81. class="material-icons"
  82. >
  83. link
  84. </a>
  85. </header>
  86. <div class="card-content">
  87. <div
  88. v-if="member.bio"
  89. class="bio"
  90. v-html="member.bio"
  91. ></div>
  92. <div v-if="member.projects" class="projects">
  93. <a
  94. v-for="project in member.projects"
  95. :key="project"
  96. :href="
  97. 'https://github.com/Musare/' +
  98. project +
  99. '/commits?author=' +
  100. member.github
  101. "
  102. target="_blank"
  103. >
  104. {{ project }}
  105. </a>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="other-contributors">
  111. <h4>Other Contributors</h4>
  112. <div>
  113. <a
  114. v-for="member in otherContributors"
  115. :key="member.name"
  116. :href="member.link"
  117. target="_blank"
  118. >
  119. {{ member.name }}
  120. </a>
  121. </div>
  122. </div>
  123. </div>
  124. </div>
  125. <main-footer />
  126. </div>
  127. </template>
  128. <script>
  129. import MainHeader from "@/components/layout/MainHeader.vue";
  130. import MainFooter from "@/components/layout/MainFooter.vue";
  131. import ProfilePicture from "@/components/ProfilePicture.vue";
  132. export default {
  133. components: { MainHeader, MainFooter, ProfilePicture },
  134. data() {
  135. return {
  136. currentTeam: [
  137. {
  138. name: "Kristian Vos",
  139. bio: "Co-Founder, Owner, Lead Developer, System Admin and QA Tester.",
  140. projects: [
  141. "MusareMeteor",
  142. "MusareReact",
  143. "MusareNode",
  144. "MusareStatus",
  145. "MusareTranslation",
  146. "aw-watcher-musare",
  147. "lofig"
  148. ],
  149. active: "Sept 2015 - present",
  150. github: "KrisVos130",
  151. link: "https://kvos.dev",
  152. avatar: {
  153. type: "text",
  154. color: "orange"
  155. }
  156. },
  157. {
  158. name: "Owen Diffey",
  159. bio: "Developer, Designer, System Admin and QA Tester. Previously Owner and Project Manager.",
  160. projects: [
  161. "MusareMeteor",
  162. "MusareReact",
  163. "MusareNode",
  164. "vue-roaster"
  165. ],
  166. active: "Feb 2016 - present",
  167. github: "odiffey",
  168. link: "https://diffey.dev",
  169. avatar: {
  170. type: "text",
  171. color: "purple"
  172. }
  173. },
  174. {
  175. name: "Jonathan Graham",
  176. bio: `
  177. <em>Student based in the UK studying Computer Science at university.</em>
  178. <br /><br />
  179. Lead Developer, Designer and QA Tester.
  180. `,
  181. projects: [
  182. "MusareMeteor",
  183. "MusareReact",
  184. "MusareNode",
  185. "vue-roaster",
  186. "lofig"
  187. ],
  188. active: "Aug 2016 - present",
  189. github: "jonathan-grah",
  190. link: "https://jgraham.dev",
  191. avatar: {
  192. type: "text",
  193. color: "blue"
  194. }
  195. }
  196. ],
  197. previousTeam: [
  198. {
  199. name: "Akira Laine",
  200. bio: "Co-Founder, Lead Developer, Designer and QA Tester.",
  201. projects: ["MusareMeteor"],
  202. active: "Sept 2015 - Feb 2016",
  203. github: "darthmeme",
  204. link: "https://github.com/AkiraLaine"
  205. },
  206. {
  207. name: "Cameron Kline",
  208. bio: "Developer, Designer and QA Tester.",
  209. projects: ["MusareMeteor", "MusareReact", "MusareNode"],
  210. active: "Aug - Nov 2016",
  211. github: "luveti",
  212. link: "https://github.com/luveti"
  213. },
  214. {
  215. name: "Antonio",
  216. bio: "Official instance Moderator.",
  217. active: "Unknown"
  218. },
  219. {
  220. name: "Aaron Gildea",
  221. bio: "Official instance Moderator.",
  222. active: "Unknown"
  223. },
  224. {
  225. name: "Johannes Andersen",
  226. bio: "Official instance Moderator and QA Tester.",
  227. active: "Unknown",
  228. link: "https://github.com/Johannes-Andersen"
  229. },
  230. {
  231. name: "Adryd",
  232. bio: "Created Logo and Notes image.",
  233. active: "May 2016",
  234. link: "https://github.com/Adryd"
  235. }
  236. ],
  237. otherContributors: [
  238. {
  239. name: "arvind-iyer",
  240. link: "https://github.com/arvind-iyer"
  241. },
  242. {
  243. name: "CullenIO",
  244. link: "https://github.com/CullenIO"
  245. },
  246. {
  247. name: "Wesley McCann",
  248. link: "https://github.com/Septimus"
  249. }
  250. ]
  251. };
  252. }
  253. };
  254. </script>
  255. <style lang="scss" scoped>
  256. .night-mode {
  257. .group .card {
  258. background-color: var(--dark-grey-3);
  259. p {
  260. color: var(--light-grey-2);
  261. }
  262. }
  263. .group .card .card-content .projects a,
  264. .other-contributors div a {
  265. background-color: var(--dark-grey);
  266. }
  267. }
  268. .container {
  269. max-width: 100% !important;
  270. }
  271. a {
  272. color: var(--primary-color);
  273. &:hover,
  274. &:focus {
  275. filter: brightness(95%);
  276. }
  277. }
  278. h2,
  279. h3,
  280. h4 {
  281. margin: 20px 0;
  282. }
  283. h2 {
  284. margin-top: 50px;
  285. }
  286. .other-contributors {
  287. display: flex;
  288. flex-direction: column;
  289. justify-content: center;
  290. text-align: center;
  291. margin-bottom: 50px;
  292. div {
  293. display: flex;
  294. flex-wrap: wrap;
  295. justify-content: center;
  296. a {
  297. background: var(--white);
  298. padding: 10px;
  299. border-radius: 5px;
  300. white-space: nowrap;
  301. margin-top: 5px;
  302. font-size: 16px;
  303. text-align: center;
  304. box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1),
  305. 0 0 0 1px rgba(10, 10, 10, 0.1);
  306. &:not(:last-of-type) {
  307. margin-right: 5px;
  308. }
  309. }
  310. }
  311. }
  312. .group {
  313. display: flex;
  314. flex-wrap: wrap;
  315. justify-content: center;
  316. margin: 0 auto;
  317. max-width: 1260px;
  318. .card {
  319. display: inline-flex;
  320. position: relative;
  321. background-color: var(--white);
  322. color: var(--dark-grey);
  323. flex-direction: column;
  324. width: calc(100% - 30px);
  325. max-width: 400px;
  326. margin: 10px;
  327. text-align: left;
  328. border-radius: 5px;
  329. box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1),
  330. 0 0 0 1px rgba(10, 10, 10, 0.1);
  331. .card-header {
  332. display: flex;
  333. position: relative;
  334. line-height: 22.5px;
  335. padding: 10px;
  336. .profile-picture {
  337. margin-right: 10px;
  338. width: 45px;
  339. height: 45px;
  340. }
  341. /deep/ .profile-picture.using-initials span {
  342. font-size: calc(
  343. 45px / 5 * 2
  344. ); // 2/5th of .profile-picture height/width
  345. }
  346. div {
  347. display: flex;
  348. flex-direction: column;
  349. line-height: 20px;
  350. margin: auto 0;
  351. strong {
  352. font-size: 18px;
  353. }
  354. }
  355. a {
  356. margin-top: auto;
  357. margin-bottom: auto;
  358. margin-left: auto;
  359. }
  360. }
  361. .card-content {
  362. display: flex;
  363. flex-direction: column;
  364. flex-grow: 1;
  365. padding: 20px;
  366. .bio {
  367. font-size: 16px;
  368. margin-bottom: 10px;
  369. }
  370. .projects {
  371. display: flex;
  372. flex-wrap: wrap;
  373. margin-top: auto;
  374. a {
  375. background: var(--light-grey);
  376. height: 30px;
  377. padding: 5px;
  378. border-radius: 5px;
  379. white-space: nowrap;
  380. margin-top: 5px;
  381. &:not(:last-of-type) {
  382. margin-right: 5px;
  383. }
  384. }
  385. }
  386. }
  387. }
  388. }
  389. </style>