diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 3ccd481..8d77c7f 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -11,7 +11,7 @@ export const Button = ({ return (
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx deleted file mode 100644 index 5129898..0000000 --- a/src/components/Footer.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// "It is the power of the mind to be unconquerable." – Seneca - -export const Footer = () => ( -
- 0x0000 -
- - Source on GitHub - -
-
-); diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 728459b..dd6d789 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,8 +1,8 @@ import clsx from "clsx"; import Link from "next/link"; import { useRouter } from "next/router"; -import { MutableRefObject, useCallback, useEffect, useRef, useState } from "react"; -import { GitHub, Home, Twitter } from "react-feather"; +import { MutableRefObject, ReactNode, useCallback, useEffect, useRef, useState } from "react"; +import { GitHub, Home } from "react-feather"; import { Theme } from "./Theme"; const PADDING = 8; @@ -75,7 +75,7 @@ const Separator = ({ className }: { className?: string }) => { const styles = { text: "dark:font-semibold text-white dark:text-black", homeText: "font-semibold dark:font-bold", - underline: "underline-themed", + underline: "sm:hover:underline", }; export const Header = () => { @@ -86,11 +86,11 @@ export const Header = () => {
diff --git a/src/components/Page.tsx b/src/components/Page.tsx index 5c8bfb6..29b143d 100644 --- a/src/components/Page.tsx +++ b/src/components/Page.tsx @@ -1,3 +1,4 @@ +import clsx from "clsx"; import Head from "next/head"; import * as React from "react"; import { Header } from "./"; @@ -30,7 +31,12 @@ export const Page = ({ } return ( -
+
{/* Meta tags */} {title} | Jason Nall diff --git a/src/components/Project.tsx b/src/components/Project.tsx index 1f9598b..58f68a5 100644 --- a/src/components/Project.tsx +++ b/src/components/Project.tsx @@ -1,28 +1,54 @@ import clsx from "clsx"; +import { Project as ProjectType } from "../types"; export const Project = ({ - name, - description, - progress = 100, - milestone, + project, className, retired, }: { - name: string; - description: string; - progress?: number; - milestone: string; + project: ProjectType; className?: string; retired?: boolean; }) => { + const { name, description, milestones, tags, website } = project; + const { name: milestone, progress = 100 } = milestones[0]; + + let title =

{name}

; + return ( -
-
{name}
-
{description}
+
+
+ {website && ( + + {title} + + )} + {!website && title} +
+
+ {description}{" "} + {website && ( + + {website.title} + + )} +
+ {tags?.length && ( +
+ {tags.map((tag) => ( +
{tag}
+ ))} +
+ )} +
@@ -31,7 +57,8 @@ export const Project = ({ "m-[-1px] flex h-6 min-w-[120px] items-center pl-2 pr-1", "text-sm text-zinc-100 dark:font-bold dark:text-black", "bg-zinc-900 dark:bg-zinc-200", - retired && "bg-zinc-700 dark:bg-zinc-400" + retired && "bg-zinc-500 dark:bg-zinc-500", + progress === 100 ? "rounded" : "rounded-l" )} style={{ width: `calc(${progress}% + 2px)` }} > @@ -39,6 +66,6 @@ export const Project = ({ {progress !== 100 &&
{progress}%
}
-
+ ); }; diff --git a/src/components/ProjectGrid.tsx b/src/components/ProjectGrid.tsx index 64221b1..dcc12ca 100644 --- a/src/components/ProjectGrid.tsx +++ b/src/components/ProjectGrid.tsx @@ -11,14 +11,11 @@ export const ProjectGrid = ({ }) => { return (
- {projects.map(({ name, description, milestones }) => { + {projects.map(project => { return ( ); diff --git a/src/components/Spacer.tsx b/src/components/Spacer.tsx index 332e362..9d765b1 100644 --- a/src/components/Spacer.tsx +++ b/src/components/Spacer.tsx @@ -6,9 +6,9 @@ export const Spacer = (props: SpacerProps) => { return (
diff --git a/src/components/index.tsx b/src/components/index.tsx index e740882..13a9ea4 100644 --- a/src/components/index.tsx +++ b/src/components/index.tsx @@ -1,7 +1,6 @@ import clsx from "clsx"; import * as React from "react"; -export * from "./Footer"; export * from "./Header"; export * from "./Page"; export * from "./Title"; @@ -15,9 +14,6 @@ export const Wrapper = (props: { children: React.ReactNode; className?: string } }; export const Heading = (props: { children: React.ReactNode; className?: string }) => { - return ( -

- {props.children} -

- ); + //

+ return

{props.children}

; }; diff --git a/src/data/projects/index.ts b/src/data/projects/index.ts index d3912d7..0adeef2 100644 --- a/src/data/projects/index.ts +++ b/src/data/projects/index.ts @@ -6,10 +6,29 @@ export const alea: Project = { milestones: [{ name: "v1", progress: 15 }], }; +export const configuration: Project = { + name: "Configuration", + description: + "System configuration for all of my development machines, defined using Nix and home-manager.", + milestones: [{ name: "Currently maintaining", progress: 100 }], + tags: ["nix", "home-manager", "neovim", "lua"], + website: { url: "https://github.com/jsonnull/configuration", title: "jsonnull/configuration" }, +}; + +export const electronTrpc: Project = { + name: "electron-trpc", + description: "Ergonomic and type-safe solution for building IPC in Electron.", + milestones: [{ name: "Currently maintaining", progress: 100 }], + tags: ["electron", "trpc"], + website: { url: "https://www.electron-trpc.dev", title: "electron-trpc.dev" }, +}; + export const jsonnull: Project = { name: "jsonnull.com", description: "My personal blog, where I share technical work.", milestones: [{ name: "Redesign", progress: 50 }], + tags: ["next.js", "tailwind"], + website: { url: "https://github.com/jsonnull/jsonnull.com", title: "jsonnull/jsonnull.com" }, }; export const novel: Project = { @@ -17,10 +36,3 @@ export const novel: Project = { description: "I'm writing an epic fantasy novel!", milestones: [{ name: "First draft", progress: 5 }], }; - -export const configuration: Project = { - name: "Configuration", - description: - "System configuration for all of my development machines, defined using Nix and home-manager.", - milestones: [{ name: "Currently maintaining", progress: 100 }], -}; diff --git a/src/global.css b/src/global.css index 36bb805..51faeb4 100644 --- a/src/global.css +++ b/src/global.css @@ -3,24 +3,24 @@ @tailwind utilities; ::-moz-selection { - color: white; - background: rgba(109, 117, 153, 0.99); - text-shadow: none; - opacity: 1; + color: white; + background: rgba(109, 117, 153, 0.99); + text-shadow: none; + opacity: 1; } ::selection { - color: white; - background: rgba(109, 117, 153, 0.99); - text-shadow: none; - opacity: 1; + color: white; + background: rgba(109, 117, 153, 0.99); + text-shadow: none; + opacity: 1; } @layer components { - .text-dimmed { - @apply text-zinc-700 dark:text-zinc-400; - } - .underline-themed { - @apply sm:hover:underline decoration-zinc-400 dark:decoration-zinc-600; - } + .text-dimmed { + @apply text-zinc-500; + } + .underline-themed { + @apply decoration-zinc-500 hover:decoration-black sm:underline; + } } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 59fc4c9..797eeb3 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,12 +2,12 @@ import clsx from "clsx"; import Image from "next/image"; import Link from "next/link"; import React from "react"; -import { ArrowRight } from "react-feather"; +import { ArrowRight, GitHub } from "react-feather"; import { Heading, Page, Wrapper } from "../components"; import { Button } from "../components/Button"; import { ProjectGrid } from "../components/ProjectGrid"; import { Spacer } from "../components/Spacer"; -import { configuration, jsonnull } from "../data/projects"; +import { electronTrpc, jsonnull } from "../data/projects"; import { profileDataURI } from "../lib/profileDataURI"; export const Title = ({ className }: { className?: string }) => { @@ -44,17 +44,17 @@ const Home = () => {
- Recent Projects + Projects
- +
diff --git a/src/pages/projects/index.tsx b/src/pages/projects/index.tsx index 65032a8..cd1be71 100644 --- a/src/pages/projects/index.tsx +++ b/src/pages/projects/index.tsx @@ -3,7 +3,7 @@ import { Heading, Page, Title, Wrapper } from "../../components"; import { Project } from "../../components/Project"; import { ProjectGrid } from "../../components/ProjectGrid"; import { Spacer } from "../../components/Spacer"; -import { configuration, jsonnull, novel } from "../../data/projects"; +import { configuration, electronTrpc, jsonnull, novel } from "../../data/projects"; import * as past from "../../data/projects/past"; const Projects = () => { @@ -16,21 +16,11 @@ const Projects = () => { Work In Progress - + Writing - {[novel].map(({ name, description, milestones }) => { - return ( - - ); - })} + Past Projects diff --git a/src/types.ts b/src/types.ts index aef4980..779729d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -16,4 +16,6 @@ export interface Project { name: string; description: string; milestones: { name: string; progress?: number }[]; + tags?: string[]; + website?: { url: string, title: string }; }