Merge remote-tracking branch 'origin' into pagination

This commit is contained in:
2025-07-16 21:57:52 -04:00
31 changed files with 1423 additions and 146 deletions

View File

@@ -26,7 +26,6 @@ export const handler: Handlers = {
message: formData.get("message")?.toString(),
};
// Validation logic
const errors: FormState["errors"] = {};
if (!state.name || state.name.trim() === "") {
@@ -44,7 +43,6 @@ export const handler: Handlers = {
errors.message = "Message is required";
}
// If there are errors, return the form with error messages
if (Object.keys(errors).length > 0) {
return ctx.render({
...state,
@@ -56,7 +54,6 @@ export const handler: Handlers = {
method: "POST",
body: formData,
});
console.log(res);
if (!res.ok || res.status !== 200) {
return ctx.render({
@@ -77,11 +74,15 @@ export default function Contact({ data }: PageProps<FormState>) {
<div class="bg-[#313244] min-h-screen">
<div class="px-4 py-8 mx-auto p-6 flex flex-col bg-[#313244] min-h-screen w-full md:max-w-md">
<Head>
<title>Contact</title>
<title>Wyatt J. Miller | Contact</title>
</Head>
<h1 class="text-3xl text-white font-bold uppercase text-center">
Contact
</h1>
<p class="md:text-lg sm:text-md text-white mt-5 mb-5">
Got a question? Here to yell at me? Send me something!
</p>
<br />
{data?.submitted && (
<div
class="bg-[#a6e3a1] text-[#313244] px-4 py-3 rounded relative"
@@ -114,7 +115,7 @@ export default function Contact({ data }: PageProps<FormState>) {
required
placeholder="Your Name"
value={data?.name || ""}
class={`w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500
class={`w-full px-3 py-2 bg-[#ECECEE] border rounded-md focus:outline-transparent
${data?.errors?.name ? "border-[#f38ba8]" : "border-[#313244]"}`}
/>
{data?.errors?.name && (
@@ -137,7 +138,7 @@ export default function Contact({ data }: PageProps<FormState>) {
required
placeholder="your@email.com"
value={data?.email || ""}
class={`w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500
class={`w-full px-3 py-2 bg-[#ECECEE] border rounded-md focus:outline-transparent
${data?.errors?.email ? "border-[#f38ba8]" : "border-[#313244]"}`}
/>
{data?.errors?.email && (
@@ -159,7 +160,7 @@ export default function Contact({ data }: PageProps<FormState>) {
required
placeholder="Write your message here..."
rows={4}
class={`w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500
class={`w-full px-3 py-2 bg-[#ECECEE] border rounded-md focus:outline-transparent
${data?.errors?.message ? "border-red-500" : "border-gray-300"}`}
>
{data?.message || ""}

View File

@@ -3,7 +3,7 @@ import { PhotoCircle } from "../components/PhotoCircle.tsx";
export default function Home() {
return (
<body>
<div class="min-w-screen flex flex-col items-center justify-between bg-[#313244] sm:min-h-screen">
<div class="flex flex-col items-center justify-between bg-[#313244] min-h-screen">
<div class="sm:mt-14 sm:mb-14 mt-12 mb-4 flex flex-col items-center gap-y-5 gap-x-10 md:flex-row">
<PhotoCircle
src="https://wyattjmiller.us-ord-1.linodeobjects.com/IMG_1480-min.png"

View File

@@ -31,11 +31,17 @@ export default function Projects({ data }: PageProps<ProjectData>) {
<div class="space-y-12 px-10 py-8 sm:min-h-screen bg-[#313244]">
<section
id="projects"
class="lg:grid-cols-desktop grid scroll-mt-16 grid-cols-1 gap-x-10 gap-y-4 bg-[#313244] "
class="lg:grid-cols-desktop grid scroll-mt-8 grid-cols-1 gap-x-4 gap-y-2 bg-[#313244] "
>
<h1 class="text-3xl text-white font-bold uppercase text-center">
Projects
</h1>
<p class="md:text-lg sm:text-md text-white">
Here's a collection of software and electronics projects I've been
tinkering with during my free time - some are ongoing adventures,
others are finished experiments, but they've all been exciting
challenges that keep me busy when I'm not doing the "real work" stuff!
</p>
<div class="grid grid-cols-1 sm:grid-cols-2">
{projects.map((project: any) => {
return (