diff --git a/src/Client/src/components/AboutTabs.tsx b/src/Client/src/components/AboutTabs.tsx new file mode 100644 index 0000000..f2c1f68 --- /dev/null +++ b/src/Client/src/components/AboutTabs.tsx @@ -0,0 +1,68 @@ +import { Tab } from "@headlessui/react"; +import { Fragment } from "react"; +import Subtitle from "./Subtitle"; + +function classNames(...classes: string[]) { + return classes.filter(Boolean).join(" "); +} + +export default function AboutTabs() { + return ( + +
+
+ + + classNames( + selected + ? "border-indigo-500 text-indigo-600" + : "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700", + "whitespace-nowrap border-b-2 py-6 text-sm font-medium" + ) + } + > + Front-end + + + classNames( + selected + ? "border-indigo-500 text-indigo-600" + : "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700", + "whitespace-nowrap border-b-2 py-6 text-sm font-medium" + ) + } + > + Back-end + + + classNames( + selected + ? "border-indigo-500 text-indigo-600" + : "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700", + "whitespace-nowrap border-b-2 py-6 text-sm font-medium" + ) + } + > + Hosting + + +
+
+ + + + Front-end + + + Back-end + + + Hosting + + +
+ ); +} diff --git a/src/Client/src/components/Link.tsx b/src/Client/src/components/Link.tsx index 578f1d5..a0982d0 100644 --- a/src/Client/src/components/Link.tsx +++ b/src/Client/src/components/Link.tsx @@ -1,16 +1,16 @@ interface Props { children: string; - href: string; + href?: string; target?: "_blank" | ""; + className?: string | null; } -export default function Link({ children, href, target }: Props) { +export default function Link({ children, href, target, className }: Props) { + const defaultStyles = "underline underline-offset-2 hover:underline-offset-4"; + const styles = className ? `${defaultStyles} ${className}` : defaultStyles; + return ( - + {children} ); diff --git a/src/Client/src/pages/AboutPage.tsx b/src/Client/src/pages/AboutPage.tsx new file mode 100644 index 0000000..e293c9b --- /dev/null +++ b/src/Client/src/pages/AboutPage.tsx @@ -0,0 +1,24 @@ +import AboutTabs from "../components/AboutTabs"; +import Link from "../components/Link"; +import Text from "../components/Text"; +import Title from "../components/Title"; + +export default function AboutPage() { + return ( + <> + This App + + Below is an overview of how this simple app is made and what + technologies are used. If you'd like to dive straight in, the full + project is available on my{" "} + GitHub. + + + I'm planning to integrate a simple blog as part of this app that will + dive into more specific implementation details so check back soon for + more! + + + + ); +} diff --git a/src/Client/src/routes.tsx b/src/Client/src/routes.tsx index 0bca920..44ddd1e 100644 --- a/src/Client/src/routes.tsx +++ b/src/Client/src/routes.tsx @@ -2,6 +2,7 @@ import { createBrowserRouter } from "react-router-dom"; import Layout from "./pages/Layout"; import HomePage from "./pages/HomePage"; import ContactPage from "./pages/ContactPage"; +import AboutPage from "./pages/AboutPage"; const router = createBrowserRouter([ { @@ -10,6 +11,7 @@ const router = createBrowserRouter([ children: [ { index: true, element: }, { path: "contact", element: }, + { path: "about", element: }, ], }, ]);