fixed next images, renamed posts to gardens
|
@ -2,11 +2,11 @@ import { motion } from "framer-motion";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
|
||||||
export default function Card({ post }) {
|
export default function Card({ garden }) {
|
||||||
return (
|
return (
|
||||||
<motion.li
|
<motion.li
|
||||||
className="w-60 mr-10 mb-14 space-y-2 opacity-80"
|
className="w-60 mr-10 mb-14 space-y-2 opacity-80"
|
||||||
key={post.filePath}
|
key={garden.filePath}
|
||||||
whileHover={{
|
whileHover={{
|
||||||
scale: 1.02,
|
scale: 1.02,
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
|
@ -17,27 +17,27 @@ export default function Card({ post }) {
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Link
|
<Link
|
||||||
as={`${post.filePath.replace(/\.mdx?$/, "")}`}
|
as={`${garden.filePath.replace(/\.mdx?$/, "")}`}
|
||||||
href={`[slug]`}
|
href={`[slug]`}
|
||||||
>
|
>
|
||||||
<a>
|
<a>
|
||||||
{post.data.image && (
|
{garden.data.image && (
|
||||||
<Image
|
<Image
|
||||||
className="rounded-md"
|
className="rounded-md"
|
||||||
src={post.data.image}
|
src={garden.data.image}
|
||||||
width={250}
|
width={250}
|
||||||
height={200}
|
height={200}
|
||||||
alt={post.data.title}
|
alt={garden.data.title}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<h3 className="text-coolGray-600 leading-tight mt-2">
|
<h3 className="text-coolGray-600 leading-tight mt-2">
|
||||||
{post.data.title}
|
{garden.data.title}
|
||||||
</h3>
|
</h3>
|
||||||
</a>
|
</a>
|
||||||
</Link>
|
</Link>
|
||||||
<motion.div>
|
<motion.div>
|
||||||
{post.data.tools &&
|
{garden.data.tools &&
|
||||||
post.data.tools.map((tool) => <p>{tool}</p>)}
|
garden.data.tools.map((tool) => <p>{tool}</p>)}
|
||||||
</motion.div>
|
</motion.div>
|
||||||
<svg className="h-4 w-4 text-coolGray-600" viewBox="0 0 20 20">
|
<svg className="h-4 w-4 text-coolGray-600" viewBox="0 0 20 20">
|
||||||
<path d="M12.95 10.707l.707-.707L8 4.343 6.586 5.757 10.828 10l-4.242 4.243L8 15.657l4.95-4.95z" />
|
<path d="M12.95 10.707l.707-.707L8 4.343 6.586 5.757 10.828 10l-4.242 4.243L8 15.657l4.95-4.95z" />
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
---
|
---
|
||||||
title: Andy Matuschak
|
title: Andy Matuschak
|
||||||
description: Algorithms that make themselves known
|
|
||||||
topics: ['evergreen notes', 'education', 'tools for thought']
|
|
||||||
url: https://notes.andymatuschak.org/
|
url: https://notes.andymatuschak.org/
|
||||||
image: /public/andy1.jpg
|
image: /andy1.png
|
||||||
tools: ['mystery system']
|
tools: ["mystery system"]
|
||||||
|
topics: ["evergreen notes", "education", "tools for thought"]
|
||||||
---
|
---
|
||||||
|
|
||||||
![Andy Matuschak's website](/public/andy1.jpg)
|
![Andy Matuschak's website](/andy3.png)
|
||||||
|
|
||||||
![Andy Matuschak's website](/public/andy2.jpg)
|
![Andy Matuschak's website](/andy2.png)
|
||||||
|
|
||||||
![Andy Matuschak's website](/public/andy3.jpg)
|
![Andy Matuschak's website](/andy1.png)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Bill Seitz
|
title: Bill Seitz
|
||||||
|
url: ""
|
||||||
image: https://via.placeholder.com/250
|
image: https://via.placeholder.com/250
|
||||||
tools: ['']
|
tools: [""]
|
||||||
---
|
---
|
||||||
|
|
13
gardens/luke-mitchell.mdx
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
title: Luke Mitchell
|
||||||
|
url: ""
|
||||||
|
image: /lukem4.png
|
||||||
|
tools: [""]
|
||||||
|
---
|
||||||
|
|
||||||
|
![](/lukem5.png)
|
||||||
|
![](/lukem4.png)
|
||||||
|
![](/lukem3.png)
|
||||||
|
![](/lukem6.png)
|
||||||
|
![](/lukem1.png)
|
||||||
|
![](/lukem2.png)
|
|
@ -17,7 +17,8 @@
|
||||||
"next-mdx-remote": "^3.0.1",
|
"next-mdx-remote": "^3.0.1",
|
||||||
"next-remote-watch": "1.0.0",
|
"next-remote-watch": "1.0.0",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-dom": "^17.0.2"
|
"react-dom": "^17.0.2",
|
||||||
|
"rehype-img-size": "^0.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.3.4",
|
"autoprefixer": "^10.3.4",
|
||||||
|
|
|
@ -2,6 +2,7 @@ import fs from "fs";
|
||||||
import matter from "gray-matter";
|
import matter from "gray-matter";
|
||||||
import { MDXRemote } from "next-mdx-remote";
|
import { MDXRemote } from "next-mdx-remote";
|
||||||
import { serialize } from "next-mdx-remote/serialize";
|
import { serialize } from "next-mdx-remote/serialize";
|
||||||
|
import imageSize from "rehype-img-size";
|
||||||
import dynamic from "next/dynamic";
|
import dynamic from "next/dynamic";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
@ -15,7 +16,7 @@ import { gardenFilePath, GARDENS_PATH } from "../utils/mdxUtils";
|
||||||
// to handle import statements. Instead, you must include components in scope
|
// to handle import statements. Instead, you must include components in scope
|
||||||
// here.
|
// here.
|
||||||
const components = {
|
const components = {
|
||||||
img: (props) => <Image {...props} layout="fill" loading="lazy" />,
|
img: (props) => <Image {...props} layout="responsive" loading="lazy" />,
|
||||||
// It also works with dynamically-imported components, which is especially
|
// It also works with dynamically-imported components, which is especially
|
||||||
// useful for conditionally loading components for certain routes.
|
// useful for conditionally loading components for certain routes.
|
||||||
// See the notes in README.md for more details.
|
// See the notes in README.md for more details.
|
||||||
|
@ -54,7 +55,7 @@ export const getStaticProps = async ({ params }) => {
|
||||||
// Optionally pass remark/rehype plugins
|
// Optionally pass remark/rehype plugins
|
||||||
mdxOptions: {
|
mdxOptions: {
|
||||||
remarkPlugins: [],
|
remarkPlugins: [],
|
||||||
rehypePlugins: [],
|
rehypePlugins: [[imageSize, { dir: "public" }]],
|
||||||
},
|
},
|
||||||
scope: data,
|
scope: data,
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,7 +9,7 @@ import Card from "../components/Card";
|
||||||
import { gardenFilePath, GARDENS_PATH } from "../utils/mdxUtils";
|
import { gardenFilePath, GARDENS_PATH } from "../utils/mdxUtils";
|
||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
|
|
||||||
export default function Index({ posts }) {
|
export default function Index({ gardens }) {
|
||||||
return (
|
return (
|
||||||
<Container>
|
<Container>
|
||||||
<Sidemenu />
|
<Sidemenu />
|
||||||
|
@ -55,8 +55,8 @@ export default function Index({ posts }) {
|
||||||
}}
|
}}
|
||||||
className="flex flex-wrap mt-24"
|
className="flex flex-wrap mt-24"
|
||||||
>
|
>
|
||||||
{posts.map((post) => (
|
{gardens.map((garden) => (
|
||||||
<Card post={post} />
|
<Card garden={garden} />
|
||||||
))}
|
))}
|
||||||
</motion.ul>
|
</motion.ul>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
@ -65,7 +65,7 @@ export default function Index({ posts }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getStaticProps() {
|
export function getStaticProps() {
|
||||||
const posts = gardenFilePath.map((filePath) => {
|
const gardens = gardenFilePath.map((filePath) => {
|
||||||
const source = fs.readFileSync(path.join(GARDENS_PATH, filePath));
|
const source = fs.readFileSync(path.join(GARDENS_PATH, filePath));
|
||||||
const { content, data } = matter(source);
|
const { content, data } = matter(source);
|
||||||
|
|
||||||
|
@ -76,5 +76,5 @@ export function getStaticProps() {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return { props: { posts } };
|
return { props: { gardens } };
|
||||||
}
|
}
|
||||||
|
|
BIN
public/andy1.jpg
Before Width: | Height: | Size: 281 KiB |
BIN
public/andy1.png
Normal file
After Width: | Height: | Size: 307 KiB |
BIN
public/andy2.jpg
Before Width: | Height: | Size: 256 KiB |
BIN
public/andy2.png
Normal file
After Width: | Height: | Size: 344 KiB |
BIN
public/andy3.jpg
Before Width: | Height: | Size: 224 KiB |
BIN
public/andy3.png
Normal file
After Width: | Height: | Size: 277 KiB |
BIN
public/lukem1.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
public/lukem2.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
public/lukem3.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
public/lukem4.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
public/lukem5.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
public/lukem6.png
Normal file
After Width: | Height: | Size: 86 KiB |
|
@ -1,11 +1,11 @@
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
// POSTS_PATH is useful when you want to get the path to a specific file
|
// GARDENS_PATH is useful when you want to get the path to a specific file
|
||||||
export const GARDENS_PATH = path.join(process.cwd(), "gardens");
|
export const GARDENS_PATH = path.join(process.cwd(), "gardens");
|
||||||
export const TOOLS_PATH = path.join(process.cwd(), "tools");
|
export const TOOLS_PATH = path.join(process.cwd(), "tools");
|
||||||
|
|
||||||
// patternFilePath is the list of all mdx files inside the POSTS_PATH directory
|
// patternFilePath is the list of all mdx files inside the GARDENS_PATH directory
|
||||||
export const gardenFilePath = fs
|
export const gardenFilePath = fs
|
||||||
.readdirSync(GARDENS_PATH)
|
.readdirSync(GARDENS_PATH)
|
||||||
// Only include md(x) files
|
// Only include md(x) files
|
||||||
|
|
17
yarn.lock
|
@ -1897,6 +1897,13 @@ image-size@1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
queue "6.0.2"
|
queue "6.0.2"
|
||||||
|
|
||||||
|
image-size@^0.9.7:
|
||||||
|
version "0.9.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.9.7.tgz#43b4ead4b1310d5ae310a559d52935a347e47c09"
|
||||||
|
integrity sha512-KRVgLNZkr00YGN0qn9MlIrmlxbRhsCcEb1Byq3WKGnIV4M48iD185cprRtaoK4t5iC+ym2Q5qlArxZ/V1yzDgA==
|
||||||
|
dependencies:
|
||||||
|
queue "6.0.2"
|
||||||
|
|
||||||
import-cwd@^3.0.0:
|
import-cwd@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92"
|
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92"
|
||||||
|
@ -3113,6 +3120,14 @@ regenerator-runtime@^0.13.4:
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
||||||
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
||||||
|
|
||||||
|
rehype-img-size@^0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/rehype-img-size/-/rehype-img-size-0.0.1.tgz#bfdb653c08817171ce78ae37db2bee930533cad9"
|
||||||
|
integrity sha512-AfJgsG0LM81+ozLkdySg5vM93gcw8N9hF8LTs2mKG39pC+wVdId9chelh/oY9MCbqvR8x7jUol4UekgVnPi1rg==
|
||||||
|
dependencies:
|
||||||
|
image-size "^0.9.7"
|
||||||
|
unist-util-visit "^2.0.3"
|
||||||
|
|
||||||
remark-footnotes@2.0.0:
|
remark-footnotes@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
|
resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
|
||||||
|
@ -3732,7 +3747,7 @@ unist-util-visit-parents@^3.0.0:
|
||||||
"@types/unist" "^2.0.0"
|
"@types/unist" "^2.0.0"
|
||||||
unist-util-is "^4.0.0"
|
unist-util-is "^4.0.0"
|
||||||
|
|
||||||
unist-util-visit@2.0.3, unist-util-visit@^2.0.0:
|
unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
|
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
|
||||||
integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
|
integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
|
||||||
|
|