Merge branch 'master' of git.mastermindzh.tech:mastermindzh/rickvanlieshout.com into feature/resume-and-portfolio

This commit is contained in:
Rick van Lieshout 2022-10-11 20:53:48 +02:00
commit eddb16aae6
16 changed files with 2877 additions and 4565 deletions

View File

@ -46,7 +46,7 @@
"email": "info@rickvanlieshout.com", "email": "info@rickvanlieshout.com",
"github": "mastermindzh", "github": "mastermindzh",
"facebook": "mastermindzh", "facebook": "mastermindzh",
"rss": "", "rss": "rss.xml",
"twitter": "mastermindzh", "twitter": "mastermindzh",
"linkedin": "rickvanlieshout", "linkedin": "rickvanlieshout",
"youtube": "RickvanLieshoutt", "youtube": "RickvanLieshoutt",
@ -57,7 +57,8 @@
"gitlab": "", "gitlab": "",
"medium": "", "medium": "",
"codepen": "", "codepen": "",
"soundcloud": "" "soundcloud": "",
"phone": "+31614436562"
} }
} }
} }

7278
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -47,31 +47,31 @@
"@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/fontawesome-svg-core": "^6.2.0",
"@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/free-solid-svg-icons": "^6.2.0",
"@fortawesome/react-fontawesome": "^0.2.0", "@fortawesome/react-fontawesome": "^0.2.0",
"classnames": "^2.3.1", "classnames": "^2.3.2",
"disqus-react": "^1.1.3", "disqus-react": "^1.1.4",
"gatsby": "^4.23.0", "gatsby": "^4.24.4",
"gatsby-link": "^4.23.0", "gatsby-link": "^4.24.1",
"gatsby-plugin-catch-links": "^4.23.0", "gatsby-plugin-catch-links": "^4.24.0",
"gatsby-plugin-feed": "^4.23.0", "gatsby-plugin-feed": "^4.24.0",
"gatsby-plugin-image": "^2.23.0", "gatsby-plugin-image": "^2.24.0",
"gatsby-plugin-manifest": "^4.23.0", "gatsby-plugin-manifest": "^4.24.0",
"gatsby-plugin-offline": "^5.23.0", "gatsby-plugin-offline": "^5.24.0",
"gatsby-plugin-optimize-svgs": "^1.0.5", "gatsby-plugin-optimize-svgs": "^1.0.5",
"gatsby-plugin-react-helmet": "^5.23.0", "gatsby-plugin-react-helmet": "^5.24.0",
"gatsby-plugin-sass": "^5.23.0", "gatsby-plugin-sass": "^5.24.0",
"gatsby-plugin-sharp": "^4.23.0", "gatsby-plugin-sharp": "^4.24.0",
"gatsby-plugin-sitemap": "^5.23.0", "gatsby-plugin-sitemap": "^5.24.0",
"gatsby-remark-autolink-headers": "^5.23.0", "gatsby-remark-autolink-headers": "^5.24.0",
"gatsby-remark-copy-linked-files": "^5.23.0", "gatsby-remark-copy-linked-files": "^5.24.0",
"gatsby-remark-external-links": "0.0.4", "gatsby-remark-external-links": "0.0.4",
"gatsby-remark-images": "^6.23.0", "gatsby-remark-images": "^6.24.0",
"gatsby-remark-images-medium-zoom": "^1.7.0", "gatsby-remark-images-medium-zoom": "^1.7.0",
"gatsby-remark-prismjs": "^6.23.0", "gatsby-remark-prismjs": "^6.24.0",
"gatsby-remark-responsive-iframe": "^5.23.0", "gatsby-remark-responsive-iframe": "^5.24.0",
"gatsby-remark-smartypants": "^5.23.0", "gatsby-remark-smartypants": "^5.24.0",
"gatsby-source-filesystem": "^4.23.0", "gatsby-source-filesystem": "^4.24.0",
"gatsby-transformer-remark": "^5.23.0", "gatsby-transformer-remark": "^5.24.0",
"gatsby-transformer-sharp": "^4.23.0", "gatsby-transformer-sharp": "^4.24.0",
"prismjs": "^1.29.0", "prismjs": "^1.29.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-cookie-consent": "^8.0.1", "react-cookie-consent": "^8.0.1",
@ -81,29 +81,29 @@
"reading-time": "^1.5.0" "reading-time": "^1.5.0"
}, },
"devDependencies": { "devDependencies": {
"@jest/globals": "^27.5.1", "@jest/globals": "^29.1.2",
"@mastermindzh/eslint-config": "^1.0.1", "@mastermindzh/eslint-config": "^1.0.2",
"@mastermindzh/prettier-config": "^1.0.0", "@mastermindzh/prettier-config": "^1.0.0",
"@semantic-release/exec": "6.0.3", "@semantic-release/exec": "6.0.3",
"@semantic-release/git": "10.0.1", "@semantic-release/git": "10.0.1",
"@swc/core": "^1.3.1", "@swc/core": "^1.3.6",
"@swc/jest": "^0.2.22", "@swc/jest": "^0.2.23",
"@types/gatsby-transformer-remark": "^2.9.1", "@types/gatsby-transformer-remark": "^2.9.1",
"@types/jest": "^29.0.3", "@types/jest": "^29.1.2",
"@types/node": "^18.7.3", "@types/node": "^18.8.4",
"@types/react": "^18.0.20", "@types/react": "^18.0.21",
"@types/react-dom": "^18.0.6", "@types/react-dom": "^18.0.6",
"@types/react-helmet": "^6.1.5", "@types/react-helmet": "^6.1.5",
"@types/react-test-renderer": "^18.0.0", "@types/react-test-renderer": "^18.0.0",
"@types/react-toggle": "^4.0.3", "@types/react-toggle": "^4.0.3",
"@types/sass": "^1.43.1", "@types/sass": "^1.43.1",
"@typescript-eslint/eslint-plugin": "^5.37.0", "@typescript-eslint/eslint-plugin": "^5.40.0",
"@typescript-eslint/parser": "^5.37.0", "@typescript-eslint/parser": "^5.40.0",
"autoprefixer": "^10.4.11", "autoprefixer": "^10.4.12",
"browserslist": "^4.21.4", "browserslist": "^4.21.4",
"codecov": "^3.8.3", "codecov": "^3.8.3",
"concurrently": "^7.3.0", "concurrently": "^7.4.0",
"eslint": "^8.23.0", "eslint": "^8.25.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^8.5.0",
@ -111,34 +111,34 @@
"eslint-import-resolver-typescript": "^3.5.1", "eslint-import-resolver-typescript": "^3.5.1",
"eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.26.0", "eslint-plugin-import": "^2.26.0",
"eslint-plugin-jest": "^27.0.4", "eslint-plugin-jest": "^27.1.1",
"eslint-plugin-jsx-a11y": "^6.6.1", "eslint-plugin-jsx-a11y": "^6.6.1",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.8", "eslint-plugin-react": "^7.31.10",
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-simple-import-sort": "^8.0.0", "eslint-plugin-simple-import-sort": "^8.0.0",
"husky": "8.0.1", "husky": "8.0.1",
"identity-obj-proxy": "3.0.0", "identity-obj-proxy": "3.0.0",
"jest": "^29.0.3", "jest": "^29.1.2",
"jest-cli": "^29.0.3", "jest-cli": "^29.1.2",
"jest-environment-jsdom": "^29.0.3", "jest-environment-jsdom": "^29.1.2",
"jest-svg-transformer": "^1.0.0", "jest-svg-transformer": "^1.0.0",
"lint-staged": "^13.0.3", "lint-staged": "^13.0.3",
"lost": "9.0.1", "lost": "9.0.1",
"markdownlint": "^0.26.2", "markdownlint": "^0.26.2",
"postcss": "^8.4.16", "postcss": "^8.4.17",
"postcss-scss": "^4.0.5", "postcss-scss": "^4.0.5",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-packagejson": "^2.2.18", "prettier-plugin-packagejson": "^2.3.0",
"react-test-renderer": "^18.2.0", "react-test-renderer": "^18.2.0",
"rimraf": "3.0.2", "rimraf": "3.0.2",
"sass": "^1.54.9", "sass": "^1.55.0",
"source-map-support": "^0.5.21", "source-map-support": "^0.5.21",
"stylelint": "^14.11.0", "stylelint": "^14.13.0",
"stylelint-config-recommended-scss": "^7.0.0", "stylelint-config-recommended-scss": "^7.0.0",
"stylelint-order": "^5.0.0", "stylelint-order": "^5.0.0",
"stylelint-scss": "^4.3.0", "stylelint-scss": "^4.3.0",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^4.8.2" "typescript": "^4.8.4"
} }
} }

View File

@ -42,7 +42,7 @@ const Feed: React.FC<Props> = ({ edges }: Props) => (
</h2> </h2>
<p className={styles.description}>{edge.node.frontmatter.description}</p> <p className={styles.description}>{edge.node.frontmatter.description}</p>
<Link className={styles.more} to={edge.node.fields.slug}> <Link className={styles.more} to={edge.node.fields.slug}>
Read ({edge.node.fields.readingTime?.text}) {edge.node.fields.readingTime?.text && <>Read ({edge.node.fields.readingTime?.text})</>}
</Link> </Link>
</div> </div>
))} ))}

View File

@ -30,10 +30,7 @@ exports[`Feed renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/perfecting-the-art-of-perfection" href="/posts/perfecting-the-art-of-perfection"
> />
Read (
)
</a>
</div> </div>
<div> <div>
<div> <div>
@ -63,10 +60,7 @@ exports[`Feed renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/the-birth-of-movable-type" href="/posts/the-birth-of-movable-type"
> />
Read (
)
</a>
</div> </div>
</div> </div>
`; `;

View File

@ -30,7 +30,7 @@ exports[`Content renders correctly 1`] = `
className="hideInPrintView" className="hideInPrintView"
> >
<a <a
href="/" onClick={[Function]}
style={ style={
{ {
"lineHeight": "50px", "lineHeight": "50px",
@ -38,7 +38,7 @@ exports[`Content renders correctly 1`] = `
} }
} }
> >
All articles Back to articles
</a> </a>
<span <span
className="hideInPrintView" className="hideInPrintView"

View File

@ -31,7 +31,7 @@ exports[`Post renders correctly 1`] = `
className="hideInPrintView" className="hideInPrintView"
> >
<a <a
href="/" onClick={[Function]}
style={ style={
{ {
"lineHeight": "50px", "lineHeight": "50px",
@ -39,7 +39,7 @@ exports[`Post renders correctly 1`] = `
} }
} }
> >
All articles Back to articles
</a> </a>
<span <span
className="hideInPrintView" className="hideInPrintView"

View File

@ -1,5 +1,5 @@
import { Image } from "@/components/Image"; import { Image } from "@/components/Image";
import { Link } from "gatsby"; import { Link, navigate } from "gatsby";
import React, { FunctionComponent } from "react"; import React, { FunctionComponent } from "react";
import { ThemeSwitcher } from "../ThemeSwitcher/ThemeSwitcher"; import { ThemeSwitcher } from "../ThemeSwitcher/ThemeSwitcher";
import * as styles from "./PostHeader.module.scss"; import * as styles from "./PostHeader.module.scss";
@ -24,9 +24,9 @@ export const PostHeader: FunctionComponent<Props> = ({ author }) => {
</span> </span>
<span className="hideInPrintView"> <span className="hideInPrintView">
<Link to="/" style={{ lineHeight: "50px", marginRight: "10px" }}> <a onClick={() => navigate(-1)} style={{ lineHeight: "50px", marginRight: "10px" }}>
All articles Back to articles
</Link> </a>
<ThemeSwitcher showLabel={false} /> <ThemeSwitcher showLabel={false} />
</span> </span>
</div> </div>

View File

@ -59,6 +59,10 @@ const ICONS = {
path: "M2.846 6.887a.928.928 0 00-.303-.784l-2.24-2.7V3h6.958l5.378 11.795L17.367 3H24v.403L22.084 5.24a.561.561 0 00-.213.538v13.498a.56.56 0 00.213.537l1.871 1.837v.403h-9.412v-.403l1.939-1.882c.19-.19.19-.246.19-.537V8.321l-5.389 13.688h-.728L4.28 8.321v9.174c-.052.385.076.774.347 1.052l2.521 3.058v.404H0v-.404l2.521-3.058c.27-.279.39-.67.325-1.052V6.887z", path: "M2.846 6.887a.928.928 0 00-.303-.784l-2.24-2.7V3h6.958l5.378 11.795L17.367 3H24v.403L22.084 5.24a.561.561 0 00-.213.538v13.498a.56.56 0 00.213.537l1.871 1.837v.403h-9.412v-.403l1.939-1.882c.19-.19.19-.246.19-.537V8.321l-5.389 13.688h-.728L4.28 8.321v9.174c-.052.385.076.774.347 1.052l2.521 3.058v.404H0v-.404l2.521-3.058c.27-.279.39-.67.325-1.052V6.887z",
viewBox: "0 0 24 24", viewBox: "0 0 24 24",
}, },
phone: {
path: "M3.6,7.8 C5,10.6 7.4,12.9 10.2,14.4 L12.4,12.2 C12.7,11.9 13.1,11.8 13.4,12 C14.5,12.4 15.7,12.6 17,12.6 C17.6,12.6 18,13 18,13.6 L18,17 C18,17.6 17.6,18 17,18 C7.6,18 0,10.4 0,1 C0,0.4 0.4,0 1,0 L4.5,0 C5.1,0 5.5,0.4 5.5,1 C5.5,2.2 5.7,3.4 6.1,4.6 C6.2,4.9 6.1,5.3 5.9,5.6 L3.6,7.8 L3.6,7.8 Z",
viewBox: "0 0 18 18",
},
}; };
export default ICONS; export default ICONS;

View File

@ -26,6 +26,7 @@ const useSiteMetadata = () => {
telegram telegram
instagram instagram
soundcloud soundcloud
phone
} }
} }
menu { menu {

View File

@ -281,10 +281,7 @@ exports[`CategoryTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/perfecting-the-art-of-perfection" href="/posts/perfecting-the-art-of-perfection"
> />
Read (
)
</a>
</div> </div>
<div> <div>
<div> <div>
@ -314,10 +311,7 @@ exports[`CategoryTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/the-birth-of-movable-type" href="/posts/the-birth-of-movable-type"
> />
Read (
)
</a>
</div> </div>
</div> </div>
<div <div

View File

@ -278,10 +278,7 @@ exports[`IndexTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/perfecting-the-art-of-perfection" href="/posts/perfecting-the-art-of-perfection"
> />
Read (
)
</a>
</div> </div>
<div> <div>
<div> <div>
@ -311,10 +308,7 @@ exports[`IndexTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/the-birth-of-movable-type" href="/posts/the-birth-of-movable-type"
> />
Read (
)
</a>
</div> </div>
</div> </div>
<div <div

View File

@ -32,7 +32,7 @@ exports[`PostTemplate renders correctly 1`] = `
className="hideInPrintView" className="hideInPrintView"
> >
<a <a
href="/" onClick={[Function]}
style={ style={
{ {
"lineHeight": "50px", "lineHeight": "50px",
@ -40,7 +40,7 @@ exports[`PostTemplate renders correctly 1`] = `
} }
} }
> >
All articles Back to articles
</a> </a>
<span <span
className="hideInPrintView" className="hideInPrintView"

View File

@ -281,10 +281,7 @@ exports[`TagTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/perfecting-the-art-of-perfection" href="/posts/perfecting-the-art-of-perfection"
> />
Read (
)
</a>
</div> </div>
<div> <div>
<div> <div>
@ -314,10 +311,7 @@ exports[`TagTemplate renders correctly 1`] = `
</p> </p>
<a <a
href="/posts/the-birth-of-movable-type" href="/posts/the-birth-of-movable-type"
> />
Read (
)
</a>
</div> </div>
</div> </div>
<div <div

View File

@ -16,4 +16,5 @@ test("getContactHref", () => {
expect(getContactHref("soundcloud", "#")).toBe("https://soundcloud.com/#"); expect(getContactHref("soundcloud", "#")).toBe("https://soundcloud.com/#");
expect(getContactHref("instagram", "#")).toBe("https://www.instagram.com/#"); expect(getContactHref("instagram", "#")).toBe("https://www.instagram.com/#");
expect(getContactHref("linkedin", "#")).toBe("https://www.linkedin.com/in/#"); expect(getContactHref("linkedin", "#")).toBe("https://www.linkedin.com/in/#");
expect(getContactHref("phone", "+123")).toBe("tel:+123");
}); });

View File

@ -15,6 +15,7 @@ const getContactHref = (name: string, contact: string) => {
instagram: `https://www.instagram.com/${contact}`, instagram: `https://www.instagram.com/${contact}`,
linkedin: `https://www.linkedin.com/in/${contact}`, linkedin: `https://www.linkedin.com/in/${contact}`,
youtube: `https://www.youtube.com/c/${contact}`, youtube: `https://www.youtube.com/c/${contact}`,
phone: `tel:${contact}`,
}; };
return hrefs[name] ?? contact; return hrefs[name] ?? contact;