mirror of
https://github.com/Unkn0wnCat/KevinK.dev.js.git
synced 2025-04-29 18:26:52 +02:00
Add Friends Module
This commit is contained in:
parent
d924f1d86a
commit
ff344781e4
5 changed files with 158 additions and 0 deletions
6
content/friends/feuerhamster.json
Normal file
6
content/friends/feuerhamster.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"profession": "Full-Stack-Developer",
|
||||
"name": "Feuerhamster",
|
||||
"url": "https://hamsterlabs.de",
|
||||
"imageURL": "https://cdn.kevink.dev/assets/friends/feuerhamster.png"
|
||||
}
|
6
content/friends/jannik.json
Normal file
6
content/friends/jannik.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"profession": "",
|
||||
"name": "Jannik Kiel",
|
||||
"url": "https://unsplash.com/@jannikkiel",
|
||||
"imageURL": "https://source.unsplash.com/user/jannikkiel/300x300"
|
||||
}
|
6
content/friends/timo.json
Normal file
6
content/friends/timo.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"profession": "Systemadministrator",
|
||||
"name": "Timo Strüker",
|
||||
"url": "https://strueker.dev",
|
||||
"imageURL": "https://cdn.kevink.dev/assets/friends/timo.jpg"
|
||||
}
|
67
src/pages/friends.js
Normal file
67
src/pages/friends.js
Normal file
|
@ -0,0 +1,67 @@
|
|||
import React from "react"
|
||||
import Layout from "../layouts/default";
|
||||
import { Trans, Link, useI18next } from "gatsby-plugin-react-i18next"
|
||||
import { graphql } from 'gatsby'
|
||||
|
||||
import styles from "./friends.module.scss";
|
||||
|
||||
export const query = graphql`
|
||||
query AllFriendsQuery {
|
||||
allFriendsJson {
|
||||
nodes {
|
||||
name
|
||||
profession
|
||||
url
|
||||
imageURL
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
`
|
||||
|
||||
export default function SocialPage({data}) {
|
||||
|
||||
const {t} = useI18next();
|
||||
|
||||
function shuffle(a) {
|
||||
for (let i = a.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
[a[i], a[j]] = [a[j], a[i]];
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
return (
|
||||
<Layout module="social" title={t("friends")} description={t("friendsDescription")}>
|
||||
<section>
|
||||
<article>
|
||||
<h1><Trans>social</Trans></h1>
|
||||
|
||||
<p><Trans>friendsDescription</Trans></p>
|
||||
|
||||
<div className={styles.friendsList}>
|
||||
{
|
||||
shuffle(data.allFriendsJson.nodes).map((friend) => {
|
||||
return (
|
||||
<div className={styles.friendProfile}>
|
||||
<div className={styles.friendImage} style={{backgroundImage: "url("+friend.imageURL+")"}}>
|
||||
<span className={styles.friendName}>{friend.name}</span>
|
||||
<span className={styles.friendTitle}>{friend.profession}</span>
|
||||
</div>
|
||||
|
||||
{/*<span class="friendBio"></span>*/}
|
||||
<div className={styles.contactLinks}>
|
||||
<a className={styles.contactLink} href={friend.url} target="_blank" rel="noopener"><i class="fas fa-globe-europe" aria-hidden="true"></i> {friend.url}</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
})
|
||||
}
|
||||
</div>
|
||||
|
||||
{/*<pre>{JSON.stringify(data, null, 2)}</pre>*/}
|
||||
</article>
|
||||
</section>
|
||||
</Layout>
|
||||
);
|
||||
}
|
73
src/pages/friends.module.scss
Normal file
73
src/pages/friends.module.scss
Normal file
|
@ -0,0 +1,73 @@
|
|||
@import "../variables";
|
||||
|
||||
.friendsList {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.friendProfile {
|
||||
max-width: 300px;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
box-shadow: -1px 11px 33px -10px rgba(127,127,127,0.3);
|
||||
transition: transform .25s;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 20px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.friendImage {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
flex-direction: column-reverse;
|
||||
text-shadow: 0 0 10px black, 0 0 10px black, 0 0 20px black;
|
||||
}
|
||||
|
||||
.friendBio {
|
||||
padding: 15px;
|
||||
flex-grow: 1;
|
||||
text-align: justify;
|
||||
display: block;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.friendProfile .contactLinks {
|
||||
padding: 15px;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.contactLink {
|
||||
transition: text-decoration .5s;
|
||||
text-decoration: underline dotted rgba(0, 0, 0, 0);
|
||||
padding: 6px 0 6px 25px;
|
||||
color: $textColor;
|
||||
}
|
||||
|
||||
.contactLink > i {
|
||||
color: $accentColor;
|
||||
margin-left: -25px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.friendProfile:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.friendName {
|
||||
font-size: 2em;
|
||||
margin-top: -5px;
|
||||
}
|
||||
|
||||
.friendTitle {
|
||||
margin-top: auto;
|
||||
}
|
Loading…
Add table
Reference in a new issue