mirror of
https://github.com/kremalicious/blog.git
synced 2024-11-15 09:35:21 +01:00
merge Image & PostImage
This commit is contained in:
parent
ae93accd08
commit
8a7556325a
@ -2,7 +2,7 @@
|
||||
@import 'mixins';
|
||||
|
||||
.exif {
|
||||
margin-top: -($spacer);
|
||||
margin-top: -($spacer * $line-height);
|
||||
margin-bottom: $spacer * 2;
|
||||
}
|
||||
|
||||
|
@ -1,20 +1,54 @@
|
||||
@import 'variables';
|
||||
@import 'mixins';
|
||||
|
||||
.imageWrap {
|
||||
.imageTitle {
|
||||
@include transition();
|
||||
|
||||
font-size: $font-size-h3;
|
||||
font-family: $font-family-headings;
|
||||
line-height: $line-height-headings;
|
||||
font-weight: $font-weight-headings;
|
||||
font-style: normal;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
padding: $spacer / 3 $spacer;
|
||||
background: rgba($link-color, 0.85);
|
||||
color: #fff !important;
|
||||
text-shadow: 0 1px 0 #000;
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
transform: translate3d(0, -20px, 0);
|
||||
}
|
||||
|
||||
.image {
|
||||
@include media-frame;
|
||||
@include breakoutviewport;
|
||||
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: $spacer;
|
||||
max-width: none;
|
||||
margin: $spacer * $line-height auto;
|
||||
display: block;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
max-width: 940px;
|
||||
border-radius: $border-radius;
|
||||
overflow: hidden;
|
||||
|
||||
a & {
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
a:hover & {
|
||||
// single photo post teasers
|
||||
&:only-child {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
a:hover &,
|
||||
a:focus & {
|
||||
border-color: $link-color !important;
|
||||
|
||||
.imageTitle {
|
||||
opacity: 1;
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,14 @@
|
||||
import React from 'react'
|
||||
import { graphql } from 'gatsby'
|
||||
import Img from 'gatsby-image'
|
||||
import styles from './Image.module.scss'
|
||||
import { ImageProps } from '../../@types/Image'
|
||||
import styles from './Image.module.scss'
|
||||
|
||||
export const Image = ({ fluid, fixed, alt }: ImageProps) => (
|
||||
<Img
|
||||
className={styles.imageWrap}
|
||||
backgroundColor="transparent"
|
||||
fluid={fluid}
|
||||
fixed={fixed}
|
||||
alt={alt}
|
||||
/>
|
||||
export const Image = ({ title, fluid, fixed, alt, original }: ImageProps) => (
|
||||
<figure className={styles.image} data-original={original && original.src}>
|
||||
<Img backgroundColor="transparent" fluid={fluid} fixed={fixed} alt={alt} />
|
||||
{title && <figcaption className={styles.imageTitle}>{title}</figcaption>}
|
||||
</figure>
|
||||
)
|
||||
|
||||
export const imageSizeDefault = graphql`
|
||||
|
@ -47,6 +47,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
:global(.gatsby-image-wrapper) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
@ -35,6 +35,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
@ -21,6 +21,8 @@
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
|
||||
> div {
|
||||
margin: 0;
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
import React from 'react'
|
||||
import { graphql, Link } from 'gatsby'
|
||||
import Page from '../templates/Page'
|
||||
import PostImage from '../templates/Post/PostImage'
|
||||
import styles from './photos.module.scss'
|
||||
import { Post } from '../@types/Post'
|
||||
import { Image } from '../components/atoms/Image'
|
||||
import styles from './photos.module.scss'
|
||||
|
||||
const page = {
|
||||
frontmatter: {
|
||||
@ -21,7 +21,7 @@ const PhotoThumb = ({ photo }: { photo: Post }) => {
|
||||
<article className={styles.photo}>
|
||||
{image && (
|
||||
<Link to={slug}>
|
||||
<PostImage title={title} fluid={fluid} alt={title} />
|
||||
<Image title={title} fluid={fluid} alt={title} />
|
||||
</Link>
|
||||
)}
|
||||
</article>
|
||||
|
@ -31,6 +31,8 @@ kbd {
|
||||
}
|
||||
|
||||
pre {
|
||||
@include breakoutviewport;
|
||||
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 0;
|
||||
@ -45,11 +47,6 @@ pre {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
max-height: 800px;
|
||||
|
||||
@media (min-width: $screen-sm) {
|
||||
margin-left: -($spacer);
|
||||
margin-right: -($spacer);
|
||||
}
|
||||
|
||||
code {
|
||||
padding: $spacer / 2;
|
||||
white-space: pre;
|
||||
|
@ -77,7 +77,7 @@ $color-headings--dark: $brand-main-light;
|
||||
// Spacing
|
||||
/////////////////////////////////////
|
||||
|
||||
$spacer: ($font-size-base * $line-height);
|
||||
$spacer: 1.7rem;
|
||||
$padding-base-vertical: 0.75rem;
|
||||
$padding-base-horizontal: 1.25rem;
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
import React from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Post } from '../@types/Post'
|
||||
import SEO from '../components/atoms/SEO'
|
||||
import Layout from '../components/Layout'
|
||||
import styles from './Page.module.scss'
|
||||
import { Post } from '../@types/Post'
|
||||
|
||||
export default function Page({
|
||||
title,
|
||||
|
@ -1,38 +0,0 @@
|
||||
@import 'variables';
|
||||
@import 'mixins';
|
||||
|
||||
.imageTitle {
|
||||
transition: 0.1s ease-out;
|
||||
font-size: $font-size-h3;
|
||||
font-family: $font-family-headings;
|
||||
line-height: $line-height-headings;
|
||||
font-weight: $font-weight-headings;
|
||||
font-style: normal;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 10%;
|
||||
padding: $spacer / 3 $spacer;
|
||||
background: rgba($link-color, 0.85);
|
||||
color: #fff !important;
|
||||
text-shadow: 0 1px 0 #000;
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
transform: translate3d(0, -20px, 0);
|
||||
}
|
||||
|
||||
.image {
|
||||
display: block;
|
||||
|
||||
a & {
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
a:hover & {
|
||||
.imageTitle {
|
||||
opacity: 1;
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
import React from 'react'
|
||||
import { Image } from '../../components/atoms/Image'
|
||||
import styles from './PostImage.module.scss'
|
||||
import { ImageProps } from '../../@types/Image'
|
||||
|
||||
const PostImage = ({ title, fluid, fixed, alt, original }: ImageProps) => (
|
||||
<figure className={styles.image} data-original={original && original.src}>
|
||||
<Image fluid={fluid} fixed={fixed} alt={alt} />
|
||||
{title && <figcaption className={styles.imageTitle}>{title}</figcaption>}
|
||||
</figure>
|
||||
)
|
||||
|
||||
export default PostImage
|
@ -2,9 +2,10 @@
|
||||
|
||||
.lead {
|
||||
font-size: $font-size-large;
|
||||
margin-bottom: $spacer;
|
||||
margin-bottom: $spacer * $line-height;
|
||||
}
|
||||
|
||||
.index {
|
||||
font-size: $font-size-base;
|
||||
margin-top: $spacer * $line-height;
|
||||
}
|
||||
|
@ -2,8 +2,8 @@ import React from 'react'
|
||||
import { Link } from 'gatsby'
|
||||
import { ReactComponent as Forward } from '../../images/forward.svg'
|
||||
import { ReactComponent as Infinity } from '../../images/infinity.svg'
|
||||
import styles from './PostLinkActions.module.scss'
|
||||
import stylesPostMore from './PostMore.module.scss'
|
||||
import styles from './PostLinkActions.module.scss'
|
||||
|
||||
const PostLinkActions = ({
|
||||
linkurl,
|
||||
|
@ -8,7 +8,7 @@
|
||||
font-size: $font-size-h1;
|
||||
color: $color-headings;
|
||||
margin-top: 0;
|
||||
margin-bottom: $spacer;
|
||||
margin-bottom: $spacer * $line-height;
|
||||
|
||||
:global(.dark) & {
|
||||
color: $color-headings--dark;
|
||||
|
@ -54,13 +54,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.imageWrap {
|
||||
@include breakoutviewport();
|
||||
|
||||
figure {
|
||||
max-width: none;
|
||||
margin-top: $spacer * 1.5;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
import React from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { graphql } from 'gatsby'
|
||||
import { Post as PostMetadata } from '../../@types/Post'
|
||||
import Layout from '../../components/Layout'
|
||||
import PostImage from './PostImage'
|
||||
import Exif from '../../components/atoms/Exif'
|
||||
import SEO from '../../components/atoms/SEO'
|
||||
import RelatedPosts from '../../components/molecules/RelatedPosts'
|
||||
import PostTitle from './PostTitle'
|
||||
import PostLead from './PostLead'
|
||||
import PostContent from './PostContent'
|
||||
import PostActions from './PostActions'
|
||||
import PostLinkActions from './PostLinkActions'
|
||||
import SEO from '../../components/atoms/SEO'
|
||||
import PostMeta from './PostMeta'
|
||||
import Exif from '../../components/atoms/Exif'
|
||||
import RelatedPosts from '../../components/molecules/RelatedPosts'
|
||||
import styles from './index.module.scss'
|
||||
import { Post as PostMetadata } from '../../@types/Post'
|
||||
import { Image } from '../../components/atoms/Image'
|
||||
|
||||
export default function Post({
|
||||
data,
|
||||
@ -40,13 +40,11 @@ export default function Post({
|
||||
{type === 'post' && <PostLead post={post} />}
|
||||
{type === 'photo' && <PostContent post={post} />}
|
||||
{image && (
|
||||
<div className={styles.imageWrap}>
|
||||
<PostImage
|
||||
<Image
|
||||
fluid={image.childImageSharp.fluid}
|
||||
alt={title}
|
||||
original={image.childImageSharp.original}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
{image && image.fields && <Exif exif={image.fields.exif} />}
|
||||
|
||||
|
@ -1,18 +1,17 @@
|
||||
import React from 'react'
|
||||
import { Link, graphql } from 'gatsby'
|
||||
import { Post } from '../@types/Post'
|
||||
import Layout from '../components/Layout'
|
||||
import PostImage from './Post/PostImage'
|
||||
import Pagination from '../components/molecules/Pagination'
|
||||
import Featured from '../components/molecules/Featured'
|
||||
import PostTitle from './Post/PostTitle'
|
||||
import PostLead from './Post/PostLead'
|
||||
import PostContent from './Post/PostContent'
|
||||
import PostMore from './Post/PostMore'
|
||||
import PostLinkActions from './Post/PostLinkActions'
|
||||
import SEO from '../components/atoms/SEO'
|
||||
import Pagination from '../components/molecules/Pagination'
|
||||
import Featured from '../components/molecules/Featured'
|
||||
import styles from './Posts.module.scss'
|
||||
import stylesPost from './Post/index.module.scss'
|
||||
import { Post } from '../@types/Post'
|
||||
import { Image } from '../components/atoms/Image'
|
||||
|
||||
export default function Posts({
|
||||
data,
|
||||
@ -43,14 +42,12 @@ export default function Posts({
|
||||
|
||||
{image && (
|
||||
<Link to={slug} title={title}>
|
||||
<div className={stylesPost.imageWrap}>
|
||||
<PostImage
|
||||
<Image
|
||||
title={type === 'photo' ? title : null}
|
||||
fluid={image.childImageSharp.fluid}
|
||||
alt={title}
|
||||
original={image.childImageSharp.original}
|
||||
/>
|
||||
</div>
|
||||
</Link>
|
||||
)}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user