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 = () => (
-
-);
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 = () => {
{
/>
-
+
{(
[
["/projects/", "projects", projectsRef],
// ['/blog/', 'blog'],
["/about/", "about", aboutRef],
- ] as [string, string, MutableRefObject][]
+ ] as [string, ReactNode, MutableRefObject][]
).map(([url, title, ref]) => {
return (
@@ -128,30 +128,18 @@ export const Header = () => {
);
})}
+
+
+
+
+
setTheme(theme)} />
-
-
- {(
- [
- [GitHub, "https://github.com/jsonnull"],
- [Twitter, "https://twitter.com/jsonnull"],
- ] as [any, string][]
- ).map(([Icon, href]) => {
- return (
-
-
-
- );
- })}
-
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}
+
+
+ {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
-
+
-
+
See my other 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 };
}