Add favicon, and icons for image metadata
This commit is contained in:
parent
7135ec1976
commit
e8e753a054
@ -9,7 +9,7 @@ module.exports = {
|
||||
{
|
||||
resolve: 'gatsby-plugin-manifest',
|
||||
options: {
|
||||
icon: 'src/images/icon.png',
|
||||
icon: 'src/images/glasses-outline.svg',
|
||||
},
|
||||
},
|
||||
'gatsby-plugin-mdx',
|
||||
|
@ -14,7 +14,7 @@
|
||||
"serve": "gatsby serve",
|
||||
"clean": "gatsby clean",
|
||||
"lint-fix": "eslint --fix --ext .jsx,.js src",
|
||||
"deploy": "yarn build && rsync -rzP --delete public/ chuckdries@droplet.chuckdries.com:www/personal-website-staging"
|
||||
"deploy": "yarn build && rsync -rzP --delete public/ chuckdries@droplet.chuckdries.com:www/personal-website"
|
||||
},
|
||||
"dependencies": {
|
||||
"@mdx-js/mdx": "^1.6.22",
|
||||
|
@ -23,7 +23,7 @@ const GalleryImage = ({ data }) => {
|
||||
const meta = getMeta(image);
|
||||
const vibrant = getVibrant(image, true);
|
||||
|
||||
const orientationClasses = ar > 1 ? 'flex-col mx-auto' : 'portrait:mx-auto landscape:mx-4 landscape:flex-row-reverse portrait:flex-col';
|
||||
const orientationClasses = ar > 1 ? 'flex-col mx-auto' : 'portrait:mx-auto landscape:mx-5 landscape:flex-row-reverse portrait:flex-col';
|
||||
console.log(ar, orientationClasses);
|
||||
const shutterSpeed = React.useMemo(() => getShutterFractionFromExposureTime(meta.exif.ExposureTime || 0), [meta]);
|
||||
return (<>
|
||||
@ -35,7 +35,7 @@ const GalleryImage = ({ data }) => {
|
||||
/>
|
||||
</Helmet>
|
||||
<Link className="hover:underline text-vibrant-light hover:text-muted-light arrow-left-before absolute" to="/photogallery">gallery</Link>
|
||||
<div className="min-h-screen pt-4 flex flex-col justify-center">
|
||||
<div className="min-h-screen pt-5 flex flex-col justify-center">
|
||||
<div className={classnames('flex', orientationClasses)}>
|
||||
<div className="flex-grow-0">
|
||||
<GatsbyImage
|
||||
@ -51,14 +51,22 @@ const GalleryImage = ({ data }) => {
|
||||
// minHeight: '500px',
|
||||
}} />
|
||||
</div>
|
||||
<div className={classnames('flex-shrink-0 mx-2 flex flex-row', ar <= 1 && 'pt-4 flex-col flex-auto text-right')}>
|
||||
<div className="flex-auto mr-1">
|
||||
{hasName(image) && <h1 className="text-2xl mt-2 font-serif">{name}</h1>}
|
||||
<p className="mr-1">{meta.iptc.caption}</p>
|
||||
<div className={classnames('flex-shrink-0 mx-2 flex flex-row', ar <= 1 && 'pt-5 flex-col flex-auto text-right')}>
|
||||
<div className="flex-auto mr-2">
|
||||
{hasName(image) && <h1 className="text-2xl mt-3 font-serif">{name}</h1>}
|
||||
<p className="mr-2">{meta.iptc.caption}</p>
|
||||
</div>
|
||||
{shutterSpeed && <p className="mr-1">Shutter speed: {shutterSpeed}</p>}
|
||||
{meta.exif.FNumber && <p className="mr-1">Aperture: f/{meta.exif.FNumber}</p>}
|
||||
{meta.exif.ISO && <p className="mr-1">ISO: {meta.exif.ISO}</p>}
|
||||
{shutterSpeed && <div className="ml-2 text-lg">
|
||||
<span className="mr-1">{shutterSpeed}</span>
|
||||
<span className="relative" style={{top: '2px'}}><ion-icon name="stopwatch-outline"></ion-icon></span>
|
||||
</div>}
|
||||
{meta.exif.FNumber && <div className="ml-2 text-lg">
|
||||
<span className="mr-1">f/{meta.exif.FNumber}</span>
|
||||
<span className="relative" style={{top: '2px'}}>
|
||||
<ion-icon name="aperture-outline"></ion-icon>
|
||||
</span>
|
||||
</div>}
|
||||
{meta.exif.ISO && <div className="align-baseline ml-2 text-lg"><span className="mr-1">{meta.exif.ISO}</span><span className="text-xs" style={{marginRight: '-3px'}}>ISO</span></div>}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@ export const HeroA = ({
|
||||
...linkProps
|
||||
}) => (
|
||||
<a
|
||||
className={classnames('mx-1 underline', isClient && 'text-muted-light hover:text-vibrant-light', className)}
|
||||
className={classnames('mx-2 underline', isClient && 'text-muted-light hover:text-vibrant-light', className)}
|
||||
href={href}
|
||||
{...linkProps}
|
||||
>{children}</a>
|
||||
|
37
src/html.js
Normal file
37
src/html.js
Normal file
@ -0,0 +1,37 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
export default function HTML(props) {
|
||||
return (
|
||||
<html {...props.htmlAttributes}>
|
||||
<head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta content="ie=edge" httpEquiv="x-ua-compatible" />
|
||||
<meta
|
||||
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
||||
name="viewport"
|
||||
/>
|
||||
{props.headComponents}
|
||||
</head>
|
||||
<body {...props.bodyAttributes}>
|
||||
{props.preBodyComponents}
|
||||
<div
|
||||
dangerouslySetInnerHTML={{ __html: props.body }}
|
||||
id="___gatsby"
|
||||
key={'body'}
|
||||
/>
|
||||
{props.postBodyComponents}
|
||||
<script src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js" type="module"></script>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
|
||||
HTML.propTypes = {
|
||||
htmlAttributes: PropTypes.object,
|
||||
headComponents: PropTypes.array,
|
||||
bodyAttributes: PropTypes.object,
|
||||
preBodyComponents: PropTypes.array,
|
||||
body: PropTypes.string,
|
||||
postBodyComponents: PropTypes.array,
|
||||
};
|
1
src/images/glasses-outline.svg
Normal file
1
src/images/glasses-outline.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Glasses</title><path d='M224 232a32 32 0 0164 0M448 200h16M64 200H48M64 200c0 96 16 128 80 128s80-32 80-128c0 0-16-16-80-16s-80 16-80 16zM448 200c0 96-16 128-80 128s-80-32-80-128c0 0 16-16 80-16s80 16 80 16z' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32'/></svg>
|
After Width: | Height: | Size: 400 B |
@ -62,14 +62,14 @@ const IndexPage = ({ data: { allFile: { edges } } }) => {
|
||||
// 67vw = 1/1.49253731 = 1/aspect ratio of my camera lol
|
||||
: <div className="md:h-screen sm:h-two-thirds-vw" style={{gridArea: '1/1' }}></div> }
|
||||
<div className="relative grid place-items-center" style={{gridArea: '1/1'}}>
|
||||
<div className="m-2 flex flex-col items-end">
|
||||
<section className={classnames('rounded-xl py-5', isClient && ' bg-vibrant-dark-75')}>
|
||||
<div className="mx-auto px-5">
|
||||
<div className="m-3 flex flex-col items-end">
|
||||
<section className={classnames('rounded-xl py-6', isClient && ' bg-vibrant-dark-75')}>
|
||||
<div className="mx-auto px-6">
|
||||
<h1 className={classnames('font-black text-6xl', isClient && 'text-vibrant-light')}>Chuck Dries</h1>
|
||||
<h2 className={classnames('italic text-2xl', isClient && 'text-vibrant')}>Full stack software engineer & hobbyist photographer</h2>
|
||||
<ul className={classnames(isClient && 'text-muted-light')}>
|
||||
<li>Software Developer, <span className="italic">Axosoft</span></li>
|
||||
<li><HeroA className="ml-0" href="mailto:chuck@chuckdries.com" isClient={isClient}>chuck@chuckdries.com</HeroA>/<span className="ml-1">602.618.0414</span></li>
|
||||
<li><HeroA className="ml-0" href="mailto:chuck@chuckdries.com" isClient={isClient}>chuck@chuckdries.com</HeroA>/<span className="ml-2">602.618.0414</span></li>
|
||||
<li>
|
||||
<HeroA className="ml-0" href="http://github.com/chuckdries" isClient={isClient}>Github</HeroA>/
|
||||
<HeroA href="https://www.linkedin.com/in/chuckdries/" isClient={isClient}>LinkedIn</HeroA>/
|
||||
@ -82,7 +82,7 @@ const IndexPage = ({ data: { allFile: { edges } } }) => {
|
||||
</section>
|
||||
<Link
|
||||
className={classnames(
|
||||
'hover:underline inline-block p-2 px-4 my-2 text-lg rounded-md border-2 arrow-right-after font-bold font-serif',
|
||||
'hover:underline inline-block p-3 px-5 my-3 text-lg rounded-md border-2 arrow-right-after font-bold font-serif',
|
||||
isClient && 'text-muted-dark bg-muted-light border-muted-light')}
|
||||
to="/photogallery"
|
||||
>
|
||||
|
@ -21,7 +21,7 @@ const GalleryPage = ({ data }) => {
|
||||
</Helmet>
|
||||
<div className="bg-black min-h-screen 2xl:container">
|
||||
<Link className="hover:underline hover:text-blue-200 text-blue-300 arrow-left-before" to="/">home</Link>
|
||||
<h1 className="text-5xl mt-2 ml-4 font-serif font-black z-10 relative">Photo Gallery</h1>
|
||||
<h1 className="text-5xl mt-3 ml-5 font-serif font-black z-10 relative">Photo Gallery</h1>
|
||||
<div className="mx-auto">
|
||||
<MasonryGallery
|
||||
images={images}
|
||||
|
@ -15,14 +15,15 @@ module.exports = {
|
||||
},
|
||||
spacing: {
|
||||
'0': '0px',
|
||||
'1': '8px',
|
||||
'2': '12px',
|
||||
'3': '16px',
|
||||
'4': '24px',
|
||||
'5': '32px',
|
||||
'6': '48px',
|
||||
'7': '80px',
|
||||
'8': '800px',
|
||||
'1': '4px',
|
||||
'2': '8px',
|
||||
'3': '12px',
|
||||
'4': '16px',
|
||||
'5': '24px',
|
||||
'6': '32px',
|
||||
'7': '48px',
|
||||
'8': '80px',
|
||||
'9': '800px',
|
||||
},
|
||||
fontFamily: {
|
||||
...defaultTheme.fontFamily,
|
||||
|
Loading…
x
Reference in New Issue
Block a user