···11+"use client";
22+33+import HomeSectionItem from "@/components/HomeSectionItem";
44+import BaseLayout from "@/components/BaseLayout";
55+import SectionList from "@/components/SectionList";
66+import SocialLink from "@/components/SocialLink";
77+// import { importCSVDataAsJson } from "@/lib/sheetsConnector";
88+import Link from "next/link";
99+// import type { GetStaticProps } from "next";
1010+import type { Key } from "react";
1111+1212+interface HomeProps {
1313+ sectionsList: {
1414+ data: Array<HomeSection>;
1515+ };
1616+}
1717+1818+interface HomeSection {
1919+ name: string;
2020+ link: string;
2121+ description: string;
2222+ emoji: string;
2323+}
2424+2525+export default function Home({ sectionsList }: HomeProps): React.ReactElement {
2626+ return (
2727+ <BaseLayout navbarVisible={false}>
2828+ <div className="max-w-5xl mx-auto w-full grid grid-cols-1 sm:grid-cols-2 gap-6">
2929+ <div>
3030+ <h1 className="mb-2">Hello hello, this is Bailey speaking.</h1>
3131+ <div className="prose prose-stone dark:prose-invert prose-a:no-underline leading-relaxed">
3232+ <p>
3333+ I help small business owners{" "}
3434+ <b>solve problems with technology,</b> so they can{" "}
3535+ <b>reclaim their time</b> and{" "}
3636+ <b>focus on the things that matter</b>. Contact me at{" "}
3737+ <a
3838+ className=""
3939+ href="mailto:bailey.orion.kane@gmail.com"
4040+ target="_blank"
4141+ >
4242+ <code className="underline">bailey.orion.kane@gmail.com</code>
4343+ </a>
4444+ .
4545+ </p>
4646+ <p>Some things I do:</p>
4747+ <ul className="list-disc">
4848+ <li>
4949+ <b>Build websites</b> for businesses, portfolios, or for fun
5050+ </li>
5151+ <li>
5252+ <b>Create bespoke tools</b> and systems to work more efficiently
5353+ </li>
5454+ <li>
5555+ <b>Connect systems</b> and tools together
5656+ </li>
5757+ </ul>
5858+ <div className="mx-auto not-prose">
5959+ <Link href={"/projects"} className="rounded-lg">
6060+ <p
6161+ className="w-full text-center px-4 py-2 font-semibold text-stone-900 dark:text-white
6262+ bg-gradient-to-r from-purple-200 to-orange-100 dark:from-purple-500 dark:to-orange-300
6363+ border border-stone-800 dark:border-stone-200 rounded-lg group transition hover:scale-105"
6464+ >
6565+ Example projects →
6666+ </p>
6767+ </Link>
6868+ </div>
6969+ <p>
7070+ I enjoy working with <b>small business owners and individuals</b>.
7171+ Even more fun if they work in{" "}
7272+ <span className="underline decoration-green-700 dark:decoration-green-400 underline-offset-2">
7373+ climate
7474+ </span>
7575+ ,{" "}
7676+ <span className="underline decoration-purple-700 dark:decoration-purple-400 underline-offset-2">
7777+ arts
7878+ </span>
7979+ ,{" "}
8080+ <span className="underline decoration-orange-600 dark:decoration-orange-400 underline-offset-2">
8181+ music
8282+ </span>
8383+ , or{" "}
8484+ <span className="underline decoration-blue-700 dark:decoration-blue-400 underline-offset-2">
8585+ education
8686+ </span>
8787+ .
8888+ </p>
8989+ <p>
9090+ If this sounds like you and you might have a project to work on
9191+ together, or you just want to say hi, please get in touch.
9292+ </p>
9393+ <p>Talk to you soon 👋</p>
9494+ </div>
9595+ <div className="pt-4 mt-4 border-t border-t-stone-400 dark:border-t-stone-500">
9696+ <div className="w-fit flex gap-2 items-center">
9797+ <SocialLink href="https://www.linkedin.com/in/baileykane/">
9898+ LinkedIn{" "}
9999+ </SocialLink>
100100+ <SocialLink
101101+ href="https://bsky.app/profile/baileykane.co"
102102+ icon="/img/bluesky_favicon.png"
103103+ >
104104+ Bluesky
105105+ </SocialLink>
106106+ </div>
107107+ </div>
108108+ </div>
109109+ <div className="py-6 px-2 sm:px-4 rounded-lg bg-stone-100 dark:bg-stone-800 w-full flex flex-col relative z-10">
110110+ <h3 className="text-stone-600 dark:text-stone-300 mb-2 border-b border-b-stone-400 dark:border-b-stone-500">
111111+ All of my projects
112112+ </h3>
113113+ <div className="h-full w-full items-center">
114114+ <SectionList className="item-list flex flex-col">
115115+ {sectionsList.data.map((section: HomeSection, k: Key) => (
116116+ <HomeSectionItem
117117+ link={
118118+ section.link ? section.link : section.name.toLowerCase()
119119+ }
120120+ name={section.name}
121121+ description={section.description}
122122+ emoji={section.emoji}
123123+ key={k}
124124+ />
125125+ ))}
126126+ </SectionList>
127127+ </div>
128128+ </div>
129129+ </div>
130130+ </BaseLayout>
131131+ );
132132+}
133133+134134+// // Reference: https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props#using-getstaticprops-to-fetch-data-from-a-cms
135135+// export const getStaticProps = (async () => {
136136+// const sectionsList = await importCSVDataAsJson(
137137+// process.env.NEXT_PUBLIC_HOME_DATA_URL
138138+// );
139139+140140+// return {
141141+// props: {
142142+// sectionsList,
143143+// },
144144+// revalidate: 60,
145145+// };
146146+// }) satisfies GetStaticProps<HomeProps>;
+2-1
next-env.d.ts
···11/// <reference types="next" />
22/// <reference types="next/image-types/global" />
33+/// <reference types="next/navigation-types/compat/navigation" />
3445// NOTE: This file should not be edited
55-// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
66+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.