1
0
mirror of https://github.com/kremalicious/blog.git synced 2024-12-22 09:13:35 +01:00

restructure template components

This commit is contained in:
Matthias Kretschmann 2020-03-04 22:21:12 +01:00
parent 80334bc05b
commit d53b95ee80
Signed by: m
GPG Key ID: 606EEEF3C479A91F
35 changed files with 108 additions and 39 deletions

View File

@ -38,5 +38,9 @@ module.exports = {
darkModeConfig: {
classNameDark: 'dark',
classNameLight: 'light'
},
ad: {
title: 'Ledger Nano X: Keep your crypto secure, everywhere.',
link: 'https://shop.ledger.com/pages/ledger-nano-x?r=3176d705002a'
}
}

View File

@ -1,5 +1,5 @@
const path = require('path')
const postsTemplate = path.resolve('src/templates/Posts.tsx')
const postsTemplate = path.resolve('src/components/templates/Posts.tsx')
const { itemsPerPage } = require('../config')
const redirects = [
@ -24,7 +24,7 @@ function getPaginationData(i, numPages, slug) {
}
exports.generatePostPages = (createPage, posts) => {
const postTemplate = path.resolve('src/templates/Post.tsx')
const postTemplate = path.resolve('src/components/templates/Post/index.tsx')
// Create Post pages
posts.forEach(post => {

View File

@ -33,7 +33,11 @@
"rss": "/feed.xml",
"jsonfeed": "/feed.json",
"itemsPerPage": 20,
"repoContentPath": "https://github.com/kremalicious/blog/tree/master/content"
"repoContentPath": "https://github.com/kremalicious/blog/tree/master/content",
"ad": {
"title": "",
"link": ""
}
}
}
}

View File

@ -30,4 +30,8 @@ export interface Site {
classNameDark: string
classNameLight: string
}
ad: {
title: string
link: string
}
}

View File

@ -0,0 +1,21 @@
@import 'variables';
.ad {
font-style: italic;
display: block;
text-align: center;
position: relative;
margin-top: $spacer * 3;
margin-bottom: $spacer;
&::before {
content: 'AFFILIATE';
font-size: $font-size-mini;
position: absolute;
width: 100%;
left: 0;
top: 100%;
color: $text-color-light;
text-align: center;
}
}

View File

@ -0,0 +1,29 @@
import React from 'react'
import styles from './Ad.module.scss'
import { useSiteMetadata } from '../../hooks/use-site-metadata'
interface WindowWithMatomo extends Window {
_paq?: any
}
export default function Ad() {
const { ad } = useSiteMetadata()
function handleClick(e: React.MouseEvent) {
e.preventDefault()
const { _paq } = window as WindowWithMatomo
_paq && _paq.push(['trackEvent', 'Ad Interaction', 'click'])
window.open(ad.link)
}
return (
<a
className={styles.ad}
href={ad.link}
onClick={(e: React.MouseEvent) => handleClick(e)}
>
{ad.title}
</a>
)
}

View File

@ -1,6 +1,6 @@
@import 'variables';
.pageTitle {
composes: archivetitle from '../templates/Posts.module.scss';
composes: archivetitle from './Posts.module.scss';
margin-bottom: $spacer * 2;
}

View File

@ -1,7 +1,7 @@
import React from 'react'
import { Helmet } from 'react-helmet'
import { Post } from '../@types/Post'
import SEO from '../components/atoms/SEO'
import { Post } from '../../@types/Post'
import SEO from '../atoms/SEO'
import styles from './Page.module.scss'
export default function Page({

View File

@ -4,7 +4,8 @@
.actions {
@include breakoutviewport;
margin-top: $spacer * 3;
margin-top: $spacer * 2;
margin-bottom: $spacer * 2;
background: rgba(#fff, 0.5);
padding-top: $spacer;
padding-bottom: $spacer;

View File

@ -1,10 +1,10 @@
import React from 'react'
import { render } from '@testing-library/react'
import Post from './Post'
import post from '../../jest/__fixtures__/post.json'
import postWithMore from '../../jest/__fixtures__/postWithMore.json'
import link from '../../jest/__fixtures__/link.json'
import Post from '.'
import post from '../../../../jest/__fixtures__/post.json'
import postWithMore from '../../../../jest/__fixtures__/postWithMore.json'
import link from '../../../../jest/__fixtures__/link.json'
describe('Post', () => {
const pageContext = {

View File

@ -1,19 +1,20 @@
import React from 'react'
import { Helmet } from 'react-helmet'
import { graphql } from 'gatsby'
import { Post as PostMetadata } from '../@types/Post'
import Exif from '../components/atoms/Exif'
import SEO from '../components/atoms/SEO'
import RelatedPosts from '../components/molecules/RelatedPosts'
import PostTitle from '../components/organisms/Post/Title'
import PostLead from '../components/organisms/Post/Lead'
import PostContent from '../components/organisms/Post/Content'
import PostActions from '../components/organisms/Post/Actions'
import PostLinkActions from '../components/organisms/Post/LinkActions'
import PostMeta from '../components/organisms/Post/Meta'
import PrevNext from '../components/organisms/Post/PrevNext'
import styles from './Post.module.scss'
import { Image } from '../components/atoms/Image'
import { Post as PostMetadata } from '../../../@types/Post'
import Exif from '../../atoms/Exif'
import SEO from '../../atoms/SEO'
import RelatedPosts from '../../molecules/RelatedPosts'
import PostTitle from './Title'
import PostLead from './Lead'
import PostContent from './Content'
import PostActions from './Actions'
import PostLinkActions from './LinkActions'
import PostMeta from './Meta'
import PostAd from '../../atoms/Ad'
import PrevNext from './PrevNext'
import styles from './index.module.scss'
import { Image } from '../../atoms/Image'
export default function Post({
data,
@ -58,8 +59,9 @@ export default function Post({
{type !== 'photo' && <PostContent post={post} />}
{type === 'link' && <PostLinkActions slug={slug} linkurl={linkurl} />}
<PostActions slug={slug} githubLink={githubLink} />
<PostMeta post={post} />
<PostActions slug={slug} githubLink={githubLink} />
<PostAd />
</article>
<RelatedPosts photos={type === 'photo'} tags={tags} />

View File

@ -3,7 +3,7 @@ import { render } from '@testing-library/react'
import { createHistory, createMemorySource } from '@reach/router'
import Posts from './Posts'
import data from '../../jest/__fixtures__/posts.json'
import data from '../../../jest/__fixtures__/posts.json'
describe('Post', () => {
const history = createHistory(createMemorySource('/photos'))

View File

@ -1,16 +1,16 @@
import React from 'react'
import { Link, graphql } from 'gatsby'
import { Post } from '../@types/Post'
import Pagination from '../components/molecules/Pagination'
import Featured from '../components/molecules/Featured'
import PostTitle from '../components/organisms/Post/Title'
import PostLead from '../components/organisms/Post/Lead'
import PostContent from '../components/organisms/Post/Content'
import PostMore from '../components/organisms/Post/More'
import PostLinkActions from '../components/organisms/Post/LinkActions'
import SEO from '../components/atoms/SEO'
import { Post } from '../../@types/Post'
import Pagination from '../molecules/Pagination'
import Featured from '../molecules/Featured'
import PostTitle from './Post/Title'
import PostLead from './Post/Lead'
import PostContent from './Post/Content'
import PostMore from './Post/More'
import PostLinkActions from './Post/LinkActions'
import SEO from '../atoms/SEO'
import styles from './Posts.module.scss'
import { Image } from '../components/atoms/Image'
import { Image } from '../atoms/Image'
export default function Posts({
data,

View File

@ -32,6 +32,10 @@ const query = graphql`
classNameDark
classNameLight
}
ad {
title
link
}
}
}
}

View File

@ -1,6 +1,6 @@
import React from 'react'
import { Link } from 'gatsby'
import Page from '../templates/Page'
import Page from '../components/templates/Page'
import styles from './404.module.scss'
const page = {

View File

@ -1,6 +1,6 @@
import React from 'react'
import { graphql, Link } from 'gatsby'
import Page from '../templates/Page'
import Page from '../components/templates/Page'
import { Post } from '../@types/Post'
import { Image } from '../components/atoms/Image'
import styles from './photos.module.scss'

View File

@ -1,6 +1,6 @@
import React from 'react'
import { graphql } from 'gatsby'
import Page from '../templates/Page'
import Page from '../components/templates/Page'
import Tag from '../components/atoms/Tag'
import styles from './tags.module.scss'