diff --git a/public/grain.jpeg b/public/grain.jpeg new file mode 100644 index 0000000..c6f2dfc Binary files /dev/null and b/public/grain.jpeg differ diff --git a/src/components/ItemCard.tsx b/src/components/ItemCard.tsx index adfb143..e711398 100644 --- a/src/components/ItemCard.tsx +++ b/src/components/ItemCard.tsx @@ -10,6 +10,7 @@ import {type LinkIcon, LinkIcons} from "../utils/types"; type ItemCardProps = { banner: string; + bannerSettings?: { quality: number}; bannerBlur: string; title: string; description: string; @@ -17,7 +18,7 @@ type ItemCardProps = { location: string; } -const ItemCard = ({banner, bannerBlur, title, description, links, location}: ItemCardProps) => { +const ItemCard = ({banner, bannerBlur, title, description, links, location, bannerSettings}: ItemCardProps) => { const itemRef = useRef(null); const mobileButtonRef = useRef(null); const [active, toggleActive, setActive] = useToggle() @@ -41,7 +42,9 @@ const ItemCard = ({banner, bannerBlur, title, description, links, location}: Ite
- classNames("object-cover", loaded ? null : "blur-xl")} placeholder="blur" alt={`Banner for ${title}`} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 6cb9e21..f427692 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -63,6 +63,24 @@ export async function getStaticProps() { location: "https://github.com/Xevion/Paths", } ] + }, + { + title: "Grain", + banner: "/grain.jpeg", + bannerSettings: {quality: 100}, + location: "/grain", + shortDescription: "An experimental React app to generate beautiful backgrounds with noise filters.", + longDescription: "Quickly generate beautiful backgrounds with noise filters. Built with React, hosted on Vercel, and rendered using simple SVG noise filters (just HTML & CSS).", + links: [ + { + icon: 'external', + location: "https://grain.xevion.dev" + }, + { + icon: "github", + location: "https://github.com/Xevion/grain" + } + ] } ]; diff --git a/src/utils/types.ts b/src/utils/types.ts index 02ed642..62afa15 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -1,10 +1,11 @@ -import {IconType} from "react-icons"; +import type {IconType} from "react-icons"; import {AiFillGithub, AiOutlineLink} from "react-icons/ai"; import {RxOpenInNewWindow} from "react-icons/rx"; export type Project = { title: string; banner: string; + bannerSettings?: {quality: number;} longDescription: string; shortDescription: string; links?: LinkIcon[];