Remove everything

This commit is contained in:
LordMathis 2023-11-22 20:56:57 +01:00
parent 807f399e50
commit 8c66901bda
44 changed files with 0 additions and 12699 deletions

View File

@ -1,6 +0,0 @@
node_modules/
npm-debug.log
yarn-error.log
public/
.git/
.cache/

View File

@ -1,34 +0,0 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
# Matches multiple files with brace expansion notation
# Set default charset
[*.{js,py}]
charset = utf-8
# 4 space indentation
[*.py]
indent_style = space
indent_size = 4
# Tab indentation (no size specified)
[Makefile]
indent_style = tab
# Indentation override for all JS under lib directory
[lib/**.js]
indent_style = space
indent_size = 2
# Matches the exact files either package.json or .travis.yml
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2

View File

@ -1,23 +0,0 @@
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"standard",
"plugin:react/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "babel-eslint",
"plugins": [
"babel",
"react"
],
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }]
}
}

View File

@ -1,67 +0,0 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '16 19 * * 1'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

72
.gitignore vendored
View File

@ -1,72 +0,0 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# dotenv environment variable files
.env*
# gatsby files
.cache/
public
# Mac files
.DS_Store
# Yarn
yarn-error.log
.pnp/
.pnp.js
# Yarn Integrity file
.yarn-integrity
# Custom
/content

View File

@ -1,4 +0,0 @@
.cache
package.json
package-lock.json
public

View File

@ -1,4 +0,0 @@
{
"arrowParens": "avoid",
"semi": false
}

14
LICENSE
View File

@ -1,14 +0,0 @@
The BSD Zero Clause License (0BSD)
Copyright (c) 2020 Gatsby Inc.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@ -1,8 +0,0 @@
# Personal Website
This is a source code for my personal website. It's implemented using Gatsby.js
## TODO
* Light theme
* Remove Google Fonts CDN

View File

@ -1,12 +0,0 @@
FROM node:16-alpine as front
WORKDIR /app
COPY ./ /app/
RUN yarn install
RUN yarn run build
FROM nginx:1.17.8-alpine
RUN rm -rf /usr/share/nginx/html
COPY --from=front /app/public/ /usr/share/nginx/html
COPY ./docker/default.conf /etc/nginx/conf.d/default.conf

View File

@ -1,21 +0,0 @@
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
autoindex off;
charset urtf-8;
error_page 404 /404.html;
access_log /var/log/nginx/access.log;
location ~* \.(html)$ {
add_header Cache-Control "no-store";
expires off;
}
rewrite ^([^.\?]*[^/])$ $1/ permanent;
try_files $uri $uri/ $uri/index.html =404;
}

View File

@ -1,7 +0,0 @@
/**
* Implement Gatsby's Browser APIs in this file.
*
* See: https://www.gatsbyjs.org/docs/browser-apis/
*/
// You can delete this file if you're not using it

View File

@ -1,72 +0,0 @@
module.exports = {
siteMetadata: {
author: `Matúš Námešný`,
user: "hello",
hostname: "namesny.com",
email: "matus@namesny.com",
social: [
{
name: "github",
link: "https://github.com/LordMathis",
},
{
name: "linkedin",
link: "https://www.linkedin.com/in/mat%C3%BA%C5%A1-n%C3%A1me%C5%A1n%C3%BD-3903b6128/",
}
],
},
plugins: [
{
resolve: `gatsby-source-filesystem`,
options: {
name: `pages`,
path: `${__dirname}/content/pages`,
},
},
{
resolve: `gatsby-transformer-remark`,
options: {
filter: node => node.sourceInstanceName === `pages`,
type: `MarkdownPage`
}
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `posts`,
path: `${__dirname}/content/posts/`,
},
},
{
resolve: `gatsby-transformer-remark`,
options: {
filter: node => node.sourceInstanceName === `posts`,
excerpt_separator: `<!-- end -->`,
type: `BlogPost`
}
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/images`,
},
},
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `gatsby-starter-default`,
short_name: `starter`,
start_url: `/`,
background_color: `#663399`,
theme_color: `#663399`,
display: `minimal-ui`,
icon: `src/images/favicon-32x32.png`, // This path is relative to the root of the site.
},
},
`gatsby-plugin-sass`,
],
}

View File

@ -1,93 +0,0 @@
const path = require(`path`)
const { createFilePath } = require(`gatsby-source-filesystem`)
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `pages` })
const parent = getNode(node.parent)
createNodeField({
node,
name: `slug`,
value: slug,
})
createNodeField({
node,
name: 'collection',
value: parent.sourceInstanceName,
})
}
}
exports.createPages = async ({ graphql, actions, reporter }) => {
const { createPage } = actions
// Posts query
const posts = await graphql(
`
{
allMarkdownRemark(filter:{frontmatter: {draft: {ne: true}}, fields: {collection: {eq: "posts"}}}) {
edges {
node {
fields {
slug
}
}
}
}
}
`
)
// Handle errors
if (posts.errors) {
reporter.panicOnBuild(`Error while running GraphQL query.`)
return
}
// Create pages for each markdown file.
const blogPostTemplate = path.resolve(`src/templates/blog-post.js`)
posts.data.allMarkdownRemark.edges.forEach(({ node }) => {
createPage({
path: `/posts${node.fields.slug}`,
component: blogPostTemplate,
context: {
slug: node.fields.slug,
},
})
})
const pages = await graphql(
`
{
allMarkdownRemark(filter: {fields: {collection: {eq: "pages"}}}) {
edges {
node {
fields {
slug
}
}
}
}
}
`
)
// Handle errors
if (pages.errors) {
reporter.panicOnBuild(`Error while running GraphQL query.`)
return
}
// Create pages for each markdown file.
const pageTemplate = path.resolve(`src/templates/page.js`)
pages.data.allMarkdownRemark.edges.forEach(({ node }) => {
createPage({
path: node.fields.slug,
component: pageTemplate,
context: {
slug: node.fields.slug,
},
})
})
}

View File

@ -1,7 +0,0 @@
/**
* Implement Gatsby's SSR (Server Side Rendering) APIs in this file.
*
* See: https://www.gatsbyjs.org/docs/ssr-apis/
*/
// You can delete this file if you're not using it

View File

@ -1,51 +0,0 @@
{
"name": "namesny.com",
"private": true,
"description": "Personal website",
"version": "2.0.0",
"author": "Matus Namesny <matus@namesny.com>",
"dependencies": {
"@fontsource/fira-mono": "^4.5.0",
"@fontsource/open-sans": "^4.5.2",
"gatsby": "^4.5.4",
"gatsby-image": "^3.11.0",
"gatsby-plugin-manifest": "^4.5.2",
"gatsby-plugin-offline": "^5.5.2",
"gatsby-plugin-react-helmet": "^5.5.0",
"gatsby-plugin-sass": "^5.5.0",
"gatsby-plugin-sharp": "^4.5.2",
"gatsby-source-filesystem": "^4.5.2",
"gatsby-transformer-remark": "^5.25.1",
"gatsby-transformer-sharp": "^4.5.0",
"prop-types": "^15.7.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-helmet": "^6.1.0",
"sass": "^1.49.0"
},
"devDependencies": {
"prettier": "^2.5.1"
},
"keywords": [
"gatsby",
"blog",
"portfolio"
],
"license": "0BSD",
"scripts": {
"build": "gatsby build",
"develop": "gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
"start": "npm run develop",
"serve": "gatsby serve",
"clean": "gatsby clean",
"test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/gatsbyjs/gatsby-starter-default"
},
"bugs": {
"url": "https://github.com/gatsbyjs/gatsby/issues"
}
}

View File

@ -1,21 +0,0 @@
import React from "react"
import PostLink from "./post-link"
import {header} from "../styles/blog.module.scss"
const Blog = ({ edges }) => {
const Posts = edges
.map(edge => <PostLink key={edge.node.id} post={edge.node} />)
return (
<div>
<div className={header}>
<h1>Blog</h1>
</div>
<div>
{Posts}
</div>
</div>
)
}
export default Blog

View File

@ -1,12 +0,0 @@
import React from "react"
import { footer, link } from '../styles/footer.module.scss'
const Footer = ({authorName}) => (
<footer className={footer}>
© {new Date().getFullYear()} {authorName}, Built with
{` `}
<a href="https://www.gatsbyjs.org" className={link}>Gatsby</a>
</footer>
)
export default Footer

View File

@ -1,35 +0,0 @@
import { Link } from "gatsby"
import PropTypes from "prop-types"
import React from "react"
import { header, headerWrapper, terminal, links } from "../styles/header.module.scss"
const Header = ({ user, hostname }) => (
<header className={headerWrapper}>
<div className={header}>
<div>
<Link to="/" className={terminal}>{user}@{hostname} ~ $</Link>
</div>
<nav className={links}>
<ul>
<li key="about">
<a href='/about'>
<span>~/about</span>
</a>
</li>
<li key="blog">
<a href='/blog'>
<span>~/blog</span>
</a>
</li>
</ul>
</nav>
</div>
</header>
)
Header.propTypes = {
user: PropTypes.string.isRequired,
hostname: PropTypes.string.isRequired,
}
export default Header

View File

@ -1,32 +0,0 @@
import React from "react"
import { useStaticQuery, graphql } from "gatsby"
import Img from "gatsby-image"
/*
* This component is built using `gatsby-image` to automatically serve optimized
* images with lazy loading and reduced file sizes. The image is loaded using a
* `useStaticQuery`, which allows us to load the image from directly within this
* component, rather than having to pass the image data down from pages.
*
* For more information, see the docs:
* - `gatsby-image`: https://gatsby.dev/gatsby-image
* - `useStaticQuery`: https://www.gatsbyjs.org/docs/use-static-query/
*/
const Image = () => {
const data = useStaticQuery(graphql`
query {
placeholderImage: file(relativePath: { eq: "gatsby-astronaut.png" }) {
childImageSharp {
fluid(maxWidth: 300) {
...GatsbyImageSharpFluid
}
}
}
}
`)
return <Img fluid={data.placeholderImage.childImageSharp.fluid} />
}
export default Image

View File

@ -1,19 +0,0 @@
import { Link } from "gatsby"
import PropTypes from "prop-types"
import React from "react"
import { indexWrapper, header } from "../styles/index.module.scss"
import Social from "./social"
const Index = ({ author, social, email }) => (
<div className={indexWrapper}>
<div>
<h1 className={header}>{ author }</h1>
</div>
<Social social={social} email={email}/>
</div>
)
Index.propTypes = {
}
export default Index

View File

@ -1,49 +0,0 @@
import React from "react"
import PropTypes from "prop-types"
import { useStaticQuery, graphql } from "gatsby"
import Header from "./header"
import Footer from "./footer"
import { Helmet } from "react-helmet"
import '../styles/global.scss';
import { main, content, vertical, flexWrapper } from "../styles/layout.module.scss"
const Layout = ({ children, title, verticalLayout}) => {
const data = useStaticQuery(graphql`
query SiteTitleQuery {
site {
siteMetadata {
author
user
hostname
}
}
}`)
const classes = verticalLayout ? `${content} ${vertical}` : content
return (
<div className={flexWrapper}>
<Helmet
titleTemplate={`%s | ${data.site.siteMetadata.author}`}>
<html lang="en" amp />
<title>{title}</title>
</Helmet>
<Header
user={data.site.siteMetadata.user}
hostname={data.site.siteMetadata.hostname} />
<div className={classes}>
<main className={main}>{children}</main>
</div>
<Footer authorName={data.site.siteMetadata.author}/>
</div>
)
}
Layout.propTypes = {
children: PropTypes.node.isRequired,
vertical: PropTypes.bool
}
export default Layout

View File

@ -1,28 +0,0 @@
import React from "react"
import { Link } from "gatsby"
import { postTitle, postDate, postHeader, postListItem, postExcerpt } from '../styles/post-link.module.scss'
const PostLink = ({ post }) => {
const date = new Date(post.frontmatter.date)
const options = { year: 'numeric', month: 'long', day: 'numeric' };
const postDateString = date.toLocaleDateString('en', options);
const postUrl = "/posts" + post.fields.slug
return (
<Link to={postUrl}>
<div className={postListItem} role="listitem">
<div className={postHeader} >
<span className={postTitle}>{post.frontmatter.title}</span>
<span className={postDate}>{postDateString}</span>
</div>
<div className={postExcerpt}>
<p>{post.excerpt}</p>
</div>
</div>
</Link>
)
}
export default PostLink

View File

@ -1,43 +0,0 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { socialNavbar } from '../styles/social.module.scss'
export default class Social extends Component {
static propTypes = {
social: PropTypes.arrayOf(PropTypes.object),
email: PropTypes.string
}
render () {
let key = 0
const socialLinks = this.props.social.map((val) => {
const link = (
<li key={key}>
<a href={val.link} role="link">
{val.name}
</a>
</li>
)
key += 1
return link
})
socialLinks.push(
<li key={key}>
<a href={`mailto:${this.props.email}`} role="link">
e-mail
</a>
</li>
)
return (
<div className={socialNavbar} role="list">
<ul>
{socialLinks}
</ul>
</div>
)
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 887 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,10 +0,0 @@
import React from "react"
const NotFoundPage = () => (
<Layout title="404: Not found" >
<h1>NOT FOUND</h1>
<p>You just hit a route that doesn&#39;t exist... the sadness.</p>
</Layout>
)
export default NotFoundPage

View File

@ -1,39 +0,0 @@
import React from "react"
import { useStaticQuery, graphql } from "gatsby"
import Layout from "../components/layout"
import Blog from "../components/blog"
const IndexPage = () => {
const data = useStaticQuery(graphql`
query {
allMarkdownRemark(
sort: { order: DESC, fields: [frontmatter___date] }
filter: {frontmatter: {draft: {ne: true}}, fields: {collection: {eq: "posts"}}}
) {
edges {
node {
id
excerpt
frontmatter {
date
title
}
fields {
slug
}
}
}
}
}
`)
return (
<Layout title="Blog">
<Blog edges={data.allMarkdownRemark.edges}/>
</Layout>
)
}
export default IndexPage

View File

@ -1,31 +0,0 @@
import React from "react"
import { useStaticQuery, graphql } from "gatsby"
import Layout from "../components/layout"
import Index from "../components"
const IndexPage = () => {
const data = useStaticQuery(graphql`
query SiteDataQuery {
site {
siteMetadata {
author
email
social {
name
link
}
}
}
}
`)
return (
<Layout title="Home" vertical={true} >
<Index author={data.site.siteMetadata.author} social={data.site.siteMetadata.social} email={data.site.siteMetadata.email}/>
</Layout>
)
}
export default IndexPage

View File

@ -1,5 +0,0 @@
@import "./variables.scss";
.blogPostWrapper {
text-align: left;
}

View File

@ -1,5 +0,0 @@
@import "./variables.scss";
.header {
text-align: left;
}

View File

@ -1,11 +0,0 @@
@import "./variables.scss";
.footer {
padding: 15px;
text-align: center;
background-color: $backgroundDarker;
}
.link {
color: $white;
}

View File

@ -1,25 +0,0 @@
@import "./variables.scss";
body, html {
height: 100%;
}
body {
font-family: $fontParagraph;
color: $white;
background-color: $backgroundDark;
margin: 0;
display: flex;
flex-direction: column;
min-height: 100vh;
}
@for $i from 1 through 6 {
h#{$i} {
font-family: $fontHeader;
}
}
@-ms-viewport{
width: device-width;
}

View File

@ -1,42 +0,0 @@
@import "./variables.scss";
.header {
font-family: $fontHeader;
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
@media only screen and (min-width: $breakLarge) {
width: $width;
}
}
.headerWrapper {
overflow: auto;
box-sizing: border-box;
background-color: $backgroundDarker;
display: flex;
justify-content: center;
}
.links {
ul {
list-style: none;
padding: 0;
margin: 0;
li {
display: inline;
margin: 5px;
a {
color: $white;
text-decoration: none;
}
}
}
}
.terminal {
color: $white;
text-decoration: none;
}

View File

@ -1,9 +0,0 @@
.indexWrapper {
display: flex;
flex-direction: column;
justify-content: center;
}
.header {
font-size: 3em;
}

View File

@ -1,31 +0,0 @@
@import "./variables.scss";
.content {
text-align: center;
margin: 0 auto;
flex: 1 auto;
padding: 20px;
@media only screen and (min-width: $breakLarge) {
display: flex;
width: $width;
}
}
.vertical {
display: flex;
flex-direction: column;
justify-content: center;
}
.flexWrapper {
display: flex;
flex-direction: column;
justify-content: center;
min-height: 100vh;
}
.main {
width: 100%;
height: 100%;
}

View File

@ -1,5 +0,0 @@
@import "./variables.scss";
.pageWrapper {
text-align: left;
}

View File

@ -1,52 +0,0 @@
@import "./variables.scss";
.postDate {
float: right;
color: $white;
}
.postTitle {
color: $blue;
text-decoration: none;
text-transform: capitalize;
font-family: $fontHeader;
font-size: 1.2em;
float: left;
}
.postHeader {
overflow: hidden;
}
.postsList {
margin-top: 20px;
}
.postListItem {
padding: 20px;
background-color: $black;
margin-bottom: 20px;
}
.postExcerpt {
text-align: initial;
text-decoration: none;
color: $white;
}
.headerContainer {
display: flex;
justify-content: space-between;
}
.noDecoration {
text-decoration: none;
}
a,
a:link,
a:visited,
a:hover,
a:active{
text-decoration: none;
}

View File

@ -1,19 +0,0 @@
@import "./variables.scss";
.socialNavbar {
ul {
list-style: none;
padding: 0;
li {
display: inline;
}
}
a {
color: $white;
text-shadow: $black 0px 0px 2px;
-webkit-font-smoothing: antialiased;
display: inline-block;
margin: 10px;
}
}

View File

@ -1,18 +0,0 @@
// Colors
$darkGrey: #323232;
$white: #f8f8ff;
$black: #2f2f2f;
$blue: #0f52bf;
$backgroundDarker: #252627;
$backgroundDark: #292a2d;
//Fonts
@import "~@fontsource/fira-mono/500.css";
@import "~@fontsource/open-sans/index.css"; // Weight 400.
$fontHeader: 'Fira Mono', monospace;
$fontParagraph: 'Open Sans', sans-serif;
// Content
$breakLarge: 992px;
$width: 760px;

View File

@ -1,27 +0,0 @@
import React from "react"
import { graphql } from "gatsby"
import Layout from "../components/layout"
import { blogPostWrapper } from "../styles/blog-post.module.scss"
export default function BlogPost({ data }) {
const post = data.markdownRemark
return (
<Layout>
<div className={blogPostWrapper}>
<h1>{post.frontmatter.title}</h1>
<div dangerouslySetInnerHTML={{ __html: post.html }} />
</div>
</Layout>
)
}
export const query = graphql`
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
html
frontmatter {
title
}
}
}
`

View File

@ -1,27 +0,0 @@
import React from "react"
import { graphql } from "gatsby"
import Layout from "../components/layout"
import {pageWrapper} from "../styles/page.module.scss"
export default function Page({ data }) {
const page = data.markdownRemark
return (
<Layout>
<div className={pageWrapper}>
<h1>{page.frontmatter.title}</h1>
<div dangerouslySetInnerHTML={{ __html: page.html }} />
</div>
</Layout>
)
}
export const query = graphql`
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
html
frontmatter {
title
}
}
}
`

11609
yarn.lock

File diff suppressed because it is too large Load Diff