diff --git a/content/meta.yml b/content/meta.yml index 658dea8..a965f76 100644 --- a/content/meta.yml +++ b/content/meta.yml @@ -23,3 +23,4 @@ - matthiaskretschmann.com - beta.matthiaskretschmann.com - localhost + - 05.local diff --git a/content/resume.json b/content/resume.json index ecdb63e..9118025 100644 --- a/content/resume.json +++ b/content/resume.json @@ -20,16 +20,6 @@ "network": "GitHub", "username": "kremalicious", "url": "https://github.com/kremalicious" - }, - { - "network": "Dribbble", - "username": "kremalicious", - "url": "https://dribbble.com/kremalicious" - }, - { - "network": "Keybase", - "username": "kremalicious", - "url": "https://keybase.io/kremalicious" } ], "location": { diff --git a/src/components/Layout.module.css b/src/components/Layout.module.css index 7aa837f..7a964b3 100644 --- a/src/components/Layout.module.css +++ b/src/components/Layout.module.css @@ -1,7 +1,18 @@ .screen { - margin-top: calc(var(--spacer) * var(--line-height)); + margin: calc(var(--spacer) * var(--line-height)) auto 0 auto; + padding-left: 2%; + padding-right: 2%; } +@media (min-width: 55rem) { + .screen { + padding-left: 4%; + padding-right: 4%; + max-width: calc(var(--projectImageMaxWidth) + 8%); + } +} + +/* Single Project Page */ .screen > article { display: grid; grid-template-columns: diff --git a/src/components/atoms/Button.module.css b/src/components/atoms/Button.module.css index b404f5f..f19e0d2 100644 --- a/src/components/atoms/Button.module.css +++ b/src/components/atoms/Button.module.css @@ -1,13 +1,13 @@ .button { display: block; width: 100%; - color: var(--brand-cyan); + color: var(--link-color); text-align: center; border-radius: var(--border-radius); padding: calc(var(--spacer) / 4) calc(var(--spacer) / 2); transition-property: all; background: var(--box-background-color); - border: 0.05rem solid var(--brand-cyan); + border: var(--stroke-width) solid rgba(255, 255, 255, 0.2); font-size: var(--font-size-small); text-transform: uppercase; cursor: pointer; @@ -23,15 +23,14 @@ .button svg { margin-right: calc(var(--spacer) / 4); transition: 0.2s var(--easing); - margin-bottom: -0.1rem; + margin-bottom: -0.15rem; width: var(--font-size-small); height: var(--font-size-small); } .button:hover, .button:focus { - color: #5ebeb1; - border-color: #5ebeb1; + border-color: var(--link-color); transform: translate3d(0, -0.1rem, 0); box-shadow: var(--box-shadow); } diff --git a/src/components/atoms/FullWidth.jsx b/src/components/atoms/FullWidth.jsx deleted file mode 100644 index 19174b8..0000000 --- a/src/components/atoms/FullWidth.jsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { fullWidth } from './FullWidth.module.css' - -const FullWidth = ({ children }) =>
{children}
- -FullWidth.propTypes = { - children: PropTypes.node -} - -export default FullWidth diff --git a/src/components/atoms/FullWidth.module.css b/src/components/atoms/FullWidth.module.css index dc00bd7..876893d 100644 --- a/src/components/atoms/FullWidth.module.css +++ b/src/components/atoms/FullWidth.module.css @@ -1,3 +1,8 @@ -.fullWidth { +.fullContainer { grid-column: full !important; } + +.fullWidth { + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); +} diff --git a/src/components/atoms/ProjectImage.jsx b/src/components/atoms/ProjectImage.jsx index 1f1e0da..9e0523b 100644 --- a/src/components/atoms/ProjectImage.jsx +++ b/src/components/atoms/ProjectImage.jsx @@ -4,20 +4,22 @@ import { graphql } from 'gatsby' import { GatsbyImage } from 'gatsby-plugin-image' import { projectImage as styleProjectImage } from './ProjectImage.module.css' -export default function ProjectImage({ image, alt }) { +export default function ProjectImage({ image, alt, className }) { return ( ) } ProjectImage.propTypes = { image: PropTypes.object.isRequired, - alt: PropTypes.string.isRequired + alt: PropTypes.string.isRequired, + className: PropTypes.string } export const projectImage = graphql` @@ -28,6 +30,6 @@ export const projectImage = graphql` export const projectImageTeaser = graphql` fragment ProjectImageTeaser on ImageSharp { - gatsbyImageData(layout: CONSTRAINED, width: 980, quality: 85) + gatsbyImageData(layout: CONSTRAINED, width: 740, quality: 85) } ` diff --git a/src/components/atoms/ProjectImage.module.css b/src/components/atoms/ProjectImage.module.css index 20ba2db..6883c4a 100644 --- a/src/components/atoms/ProjectImage.module.css +++ b/src/components/atoms/ProjectImage.module.css @@ -6,19 +6,22 @@ box-shadow: var(--box-shadow); } +a:hover .frame, +a:focus .frame { + border-color: var(--link-color); +} + .projectImage { composes: frame; - margin-left: auto; - margin-right: auto; display: block; } +.projectImage:not(:only-of-type) { + margin-bottom: calc(var(--spacer) * 3); +} + @media (min-width: 1200px) { - .projectImage { - max-width: var(--projectImageMaxWidth); + .projectImage:not(:only-of-type) { + margin-bottom: calc(var(--spacer) * 6); } } - -.projectImage img { - display: block; -} diff --git a/src/components/molecules/ProjectLinks.module.css b/src/components/molecules/ProjectLinks.module.css index 3b19768..6c32363 100644 --- a/src/components/molecules/ProjectLinks.module.css +++ b/src/components/molecules/ProjectLinks.module.css @@ -17,7 +17,7 @@ } .projectLinks svg { - stroke: var(--text-color-light); + stroke: var(--text-color); width: var(--font-size-small); height: var(--font-size-small); margin-left: -1.2rem; diff --git a/src/components/molecules/ProjectNav.module.css b/src/components/molecules/ProjectNav.module.css index c04b061..1358631 100644 --- a/src/components/molecules/ProjectNav.module.css +++ b/src/components/molecules/ProjectNav.module.css @@ -1,4 +1,5 @@ .projectNav { + composes: fullWidth from '../atoms/FullWidth.module.css'; white-space: nowrap; overflow-y: hidden; overflow-x: auto; diff --git a/src/components/molecules/ProjectTechstack.module.css b/src/components/molecules/ProjectTechstack.module.css index 028caa9..27428de 100644 --- a/src/components/molecules/ProjectTechstack.module.css +++ b/src/components/molecules/ProjectTechstack.module.css @@ -14,7 +14,6 @@ background: var(--box-background-color); border-radius: var(--border-radius); border: 0.05rem solid transparent; - color: var(--text-color-light); font-size: var(--font-size-small); } diff --git a/src/components/organisms/Footer.module.css b/src/components/organisms/Footer.module.css index 86e8902..446ea16 100644 --- a/src/components/organisms/Footer.module.css +++ b/src/components/organisms/Footer.module.css @@ -2,7 +2,6 @@ padding: var(--spacer); padding-top: calc(var(--spacer) * 4); text-align: center; - color: var(--text-color-light); } .footer, @@ -22,9 +21,9 @@ margin-left: calc(var(--spacer) / 2); margin-right: calc(var(--spacer) / 2); margin-bottom: calc(var(--spacer) / 2); - color: var(--text-color-light); -} - -.copyright a { color: inherit; } + +.copyright { + color: var(--text-color-light); +} diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 520e173..781340a 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -38,21 +38,19 @@ function Project({ node, images }) { const imageCount = getImageCount(images, slug) return ( -
- -

{title}

- + +

{title}

+ - {imageCount > 1 && ( - - {imageCount} - - )} - -
+ {imageCount > 1 && ( + + {imageCount} + + )} + ) } diff --git a/src/pages/index.module.css b/src/pages/index.module.css index ba9fe87..0a9e630 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -1,14 +1,10 @@ .projects { display: grid; - grid-template-columns: 1fr; - gap: calc(var(--spacer) * 3); - max-width: calc(var(--projectImageMaxWidth) + var(--spacer) * 2); - margin: 0 auto; - padding-left: var(--spacer); - padding-right: var(--spacer); + gap: calc(var(--spacer) * 2); + grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); } -@media (min-width: 30rem) { +@media (min-width: 55rem) { .projects { grid-template-columns: repeat(auto-fit, minmax(25rem, 1fr)); } @@ -24,41 +20,20 @@ z-index: 2; padding: calc(var(--spacer) / 3) var(--spacer); color: #fff !important; - background: var(--brand-cyan); + background: var(--link-color); transform: translate3d(0, -1rem, 0); transition: transform 0.2s ease-out; } .project { - position: relative; -} - -.project a { display: block; position: relative; } -.project a::after { - content: ''; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - z-index: 1; - background: transparent; - transition: background 0.2s ease-out; -} - -.project a:hover::after, -.project a:focus::after { - background: rgba(var(--brand-cyan), 0.05); -} - -.project a:hover .title, -.project a:focus .title, -.project a:hover .imageCount, -.project a:focus .imageCount { +.project:hover .title, +.project:focus .title, +.project:hover .imageCount, +.project:focus .imageCount { opacity: 1; transform: translate3d(0, 0, 0); } diff --git a/src/pages/{ProjectsYaml.slug}.jsx b/src/pages/{ProjectsYaml.slug}.jsx index a07d9df..c4b4f43 100644 --- a/src/pages/{ProjectsYaml.slug}.jsx +++ b/src/pages/{ProjectsYaml.slug}.jsx @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import { graphql } from 'gatsby' -import FullWidth from '../components/atoms/FullWidth' +import { fullContainer } from '../components/atoms/FullWidth.module.css' import ProjectImage from '../components/atoms/ProjectImage' import ProjectTechstack from '../components/molecules/ProjectTechstack' import ProjectLinks from '../components/molecules/ProjectLinks' @@ -9,7 +9,6 @@ import ProjectNav from '../components/molecules/ProjectNav' import SEO from '../components/atoms/SEO' import { meta, - imageWrap, headerTitle, description } from './{ProjectsYaml.slug}.module.css' @@ -29,15 +28,14 @@ ProjectMeta.propTypes = { } function ProjectImages({ projectImages, title }) { - return ( - - {projectImages.map(({ node }) => ( -
- -
- ))} -
- ) + return projectImages.map(({ node }) => ( + + )) } ProjectImages.propTypes = { diff --git a/src/pages/{ProjectsYaml.slug}.module.css b/src/pages/{ProjectsYaml.slug}.module.css index a69f897..e00839a 100644 --- a/src/pages/{ProjectsYaml.slug}.module.css +++ b/src/pages/{ProjectsYaml.slug}.module.css @@ -1,16 +1,8 @@ -.imageWrap { - margin-bottom: calc(var(--spacer) * 3); -} - .headerTitle { font-size: var(--font-size-h2); } @media (min-width: 30em) { - .imageWrap { - margin-bottom: calc(var(--spacer) * 6); - } - .headerTitle { font-size: var(--font-size-h1); } diff --git a/src/styles/global.css b/src/styles/global.css index d005450..7e8a341 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -92,7 +92,8 @@ a:focus { /* Media */ img, video, -svg { +svg, +figure { max-width: 100%; height: auto; margin: 0;