From e5186462f3e4aacfe8eb1c6f23421f31b3d7b756 Mon Sep 17 00:00:00 2001 From: Xevion Date: Sun, 26 Feb 2023 19:57:23 -0600 Subject: [PATCH] Switch to new fonts, darker background with gradient --- src/components/AppWrapper.tsx | 6 +- src/components/ItemCard.tsx | 4 +- src/pages/index.tsx | 288 ++++++++++++++++++---------------- src/styles/globals.scss | 4 + 4 files changed, 165 insertions(+), 137 deletions(-) diff --git a/src/components/AppWrapper.tsx b/src/components/AppWrapper.tsx index 12d6f6c..4eeba19 100644 --- a/src/components/AppWrapper.tsx +++ b/src/components/AppWrapper.tsx @@ -18,7 +18,7 @@ type WrapperProps = { }; const AppWrapper: FunctionComponent = ({current, children, hideNavigation, className}: WrapperProps) => { - return
+ return
{!hideNavigation ? {({open}) => ( <> @@ -38,14 +38,14 @@ const AppWrapper: FunctionComponent = ({current, children, hideNav
-
+
{navigation.map((item) => ( diff --git a/src/components/ItemCard.tsx b/src/components/ItemCard.tsx index e711398..706914a 100644 --- a/src/components/ItemCard.tsx +++ b/src/components/ItemCard.tsx @@ -53,8 +53,8 @@ const ItemCard = ({banner, bannerBlur, title, description, links, location, bann
{title} -
{title} +
{ e.stopPropagation(); navigate(); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index fa33fcf..efb1a6a 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,160 +1,184 @@ -import {type NextPage} from "next"; +import { type NextPage } from "next"; import Head from "next/head"; -import React, {useEffect} from "react"; +import React, { useEffect } from "react"; import ItemCard from "../components/ItemCard"; -import {getPlaiceholder} from "plaiceholder"; -import {useBreakpointValue} from "../utils/helpers"; -import type {Project} from "../utils/types"; +import { getPlaiceholder } from "plaiceholder"; +import { useBreakpointValue } from "../utils/helpers"; +import type { Project } from "../utils/types"; import Link from "next/link"; +import Balancer from "react-wrap-balancer"; import AppWrapper from "../components/AppWrapper"; type ProjectWithBlur = Project & { bannerBlur: string }; - type HomeStaticProps = { - projects: ProjectWithBlur[]; -} + projects: ProjectWithBlur[]; +}; export async function getStaticProps() { - const projects: Project[] = [ + const projects: Project[] = [ + { + title: "Portal", + banner: "/portal/banner.jpeg", + location: "/portal", + longDescription: + "An advanced membership & event management system for my university's premier computer science organization.", + shortDescription: + "Advanced membership & event management system for students", + links: [ { - title: "Portal", - banner: "/portal/banner.jpeg", - location: "/portal", - longDescription: "An advanced membership & event management system for my university's premier computer science organization.", - shortDescription: "Advanced membership & event management system for students", - links: [ - { - icon: "github", - location: "https://github.com/UTSA-ACM/Portal" - }, - { - icon: "external", - location: "https://portal.acmutsa.org/" - } - ] + icon: "github", + location: "https://github.com/UTSA-ACM/Portal", }, { - title: "Phototag", - banner: "/phototag.png", - location: "/phototag", - longDescription: `Using Google's Vision API and supporting metadata formats on Windows, Phototag makes it easy to quickly add rich, descriptive tags to your photos, saving you time and effort.`, - shortDescription: "Effortlessly add rich & descriptive tags to your photos with Phototag.", - links: [ - { - icon: "github", - location: "https://github.com/Xevion/phototag" - }, - { - icon: "external", - location: "https://phototag.xevion.dev" - } - ] + icon: "external", + location: "https://portal.acmutsa.org/", + }, + ], + }, + { + title: "Phototag", + banner: "/phototag.png", + location: "/phototag", + longDescription: `Using Google's Vision API and supporting metadata formats on Windows, Phototag makes it easy to quickly add rich, descriptive tags to your photos, saving you time and effort.`, + shortDescription: + "Effortlessly add rich & descriptive tags to your photos with Phototag.", + links: [ + { + icon: "github", + location: "https://github.com/Xevion/phototag", }, { - title: "Paths", - banner: "/paths.png", - location: "/paths", - shortDescription: "Discover the power of graph traversal algorithms with my interactive application.", - longDescription: `Discover the power of graph traversal algorithms with my interactive Unity application! + icon: "external", + location: "https://phototag.xevion.dev", + }, + ], + }, + { + title: "Paths", + banner: "/paths.png", + location: "/paths", + shortDescription: + "Discover the power of graph traversal algorithms with my interactive application.", + longDescription: `Discover the power of graph traversal algorithms with my interactive Unity application! Easily generate and edit graphs, create mazes, and experiment with different algorithm configurations to find the most efficient path.`, - links: [ - { - icon: "github", - location: "https://github.com/Xevion/Paths", - } - ] + links: [ + { + icon: "github", + location: "https://github.com/Xevion/Paths", + }, + ], + }, + { + title: "Grain", + banner: "/grain/banner.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", }, { - title: "Grain", - banner: "/grain/banner.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" - } - ] - } - ]; + icon: "github", + location: "https://github.com/Xevion/grain", + }, + ], + }, + ]; - return { - props: { - projects: await Promise.all(projects.map(async project => { - const {base64} = await getPlaiceholder(project.banner, {size: 16}); - return { - ...project, - bannerBlur: base64 - }; - })) - } - } + return { + props: { + projects: await Promise.all( + projects.map(async (project) => { + const { base64 } = await getPlaiceholder(project.banner, { + size: 16, + }); + return { + ...project, + bannerBlur: base64, + }; + }) + ), + }, + }; } const buttons = [ - {text: "GitHub", href: "https://github.com/Xevion"}, - {text: "Contact", href: "/contact"}, - {text: "Resume", href: "/resume"} -] + { text: "GitHub", href: "https://github.com/Xevion" }, + { text: "Contact", href: "/contact" }, + { text: "Resume", href: "/resume" }, +]; -const Home: NextPage = ({projects}: HomeStaticProps) => { - const useLong = useBreakpointValue("sm", true, false); +const Home: NextPage = ({ projects }: HomeStaticProps) => { + const useLong = useBreakpointValue("sm", true, false); - // use-tailwind-breakpoint - useEffect(() => { - typeof window !== "undefined" ? window.dispatchEvent(new Event("resize")) : null; - }, []); + // use-tailwind-breakpoint + useEffect(() => { + typeof window !== "undefined" + ? window.dispatchEvent(new Event("resize")) + : null; + }, []); - return ( - <> - - Xevion.dev - - - - -
-
- WIP -
-
-
Hi. I'm Ryan Walters.
-
Full Stack Software Developer
-
- {buttons.map(({text, href}) => - -
- {text} -
- - )} -
-
-
-
-
-
- { - projects.map((project, index) => - - ) - } -
-
-
-
- - ); + return ( + <> + + Xevion.dev + + + + +
+
+ +
+ XEVION +
+
+ + Building software at Black Pearl Technology during my undergrad.
+ Always open to new opportunities. +
+
+
+
+
+
+
+ {projects.map((project, index) => ( + + ))} +
+
+
+
+ + ); }; export default Home; diff --git a/src/styles/globals.scss b/src/styles/globals.scss index 47f5c21..a3294cf 100644 --- a/src/styles/globals.scss +++ b/src/styles/globals.scss @@ -8,6 +8,10 @@ @tailwind components; @tailwind utilities; +.body-gradient { + background-image: linear-gradient(to top left, black, rgb(161 161 170 / 0.1), black); +} + @mixin active { .elements { @apply grid opacity-100;