diff --git a/public/hero.gif b/public/hero.gif
new file mode 100644
index 0000000..4a2807b
Binary files /dev/null and b/public/hero.gif differ
diff --git a/src/app.config.ts b/src/app.config.ts
index 14e7042..9cabe35 100644
--- a/src/app.config.ts
+++ b/src/app.config.ts
@@ -1,5 +1,10 @@
+import { TechIcon } from "./components/setions/tech";
+
+export type SocialIcon = "github" | "discord";
+
type AppConfig = {
navigator: { label: string; path: string }[];
+ socials: { name: string; icon: SocialIcon; link: string }[];
};
export const appConfig: AppConfig = {
@@ -10,13 +15,32 @@ export const appConfig: AppConfig = {
},
{
label: "Projects",
- path: "/#projects",
+ path: "/projects",
},
{
label: "Contact",
path: "/contact/#",
},
],
+ socials: [
+ {
+ name: "discord",
+ icon: "discord",
+ link: "https://discord.com",
+ },
+ {
+ name: "github",
+ icon: "github",
+ link: "https://github.com",
+ },
+ {
+ name: "github",
+ icon: "github",
+ link: "https://github.com",
+ },
+ ],
};
export const appNavigator = appConfig.navigator;
+
+export const socials = appConfig.socials;
diff --git a/src/app/(__PAGES__)/contact/page.tsx b/src/app/(__PAGES__)/contact/page.tsx
index 0052577..871f058 100644
--- a/src/app/(__PAGES__)/contact/page.tsx
+++ b/src/app/(__PAGES__)/contact/page.tsx
@@ -1,21 +1,8 @@
-import MeCard from "@/components/me-card";
-import Contact from "@/components/setions/contact";
import React from "react";
+import Contact from "@/components/setions/contact";
function ContactPage() {
- return (
-
-
-
-
-
- );
+ return ;
}
export default ContactPage;
diff --git a/src/app/(__PAGES__)/layout.tsx b/src/app/(__PAGES__)/layout.tsx
index 573f384..376400c 100644
--- a/src/app/(__PAGES__)/layout.tsx
+++ b/src/app/(__PAGES__)/layout.tsx
@@ -1,5 +1,6 @@
import React from "react";
import Navbar from "@/components/navbar";
+import Footer from "@/components/footer";
function Layout({ children }: { children: JSX.Element }) {
return (
@@ -10,6 +11,8 @@ function Layout({ children }: { children: JSX.Element }) {
{/* */}
+
+
);
}
diff --git a/src/app/(__PAGES__)/page.tsx b/src/app/(__PAGES__)/page.tsx
index 9c8fc06..ea557ab 100644
--- a/src/app/(__PAGES__)/page.tsx
+++ b/src/app/(__PAGES__)/page.tsx
@@ -1,11 +1,17 @@
-import { Hero, Projects } from "@/components/setions";
+import { Hero, Projects, Tech } from "@/components/setions";
+import Contact from "@/components/setions/contact";
export default function Home() {
return (
<>
-
-
+
+
+
+
>
);
diff --git a/src/app/(__PAGES__)/projects/page.tsx b/src/app/(__PAGES__)/projects/page.tsx
new file mode 100644
index 0000000..2713772
--- /dev/null
+++ b/src/app/(__PAGES__)/projects/page.tsx
@@ -0,0 +1,14 @@
+import { Projects } from "@/components/setions";
+import Contact from "@/components/setions/contact";
+import React from "react";
+
+function ProjectsPage() {
+ return (
+ <>
+
+
+ >
+ );
+}
+
+export default ProjectsPage;
diff --git a/src/app/globals.css b/src/app/globals.css
index 0376d2a..d7f94fd 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -65,13 +65,6 @@ body {
}
@layer base {
- * {
- @apply border-border;
- }
- body {
- @apply dark bg-background text-foreground;
- }
-
@font-face {
font-family: "Poppins";
src: url("./fonts/Poppins-Regular.ttf") format("truetype");
@@ -85,6 +78,18 @@ body {
font-weight: 700;
font-style: normal;
}
+}
+
+@layer base {
+ * {
+ @apply border-border;
+ }
+ body {
+ @apply dark bg-background text-foreground;
+ }
+ html {
+ scroll-behavior: smooth;
+ }
.halftone {
--dotSize: 0.25rem;
@@ -122,7 +127,3 @@ body {
);
}
}
-
-html {
- scroll-behavior: smooth;
-}
diff --git a/src/components/contact-form.tsx b/src/components/contact-form.tsx
new file mode 100644
index 0000000..be1a3ab
--- /dev/null
+++ b/src/components/contact-form.tsx
@@ -0,0 +1,132 @@
+"use client";
+
+import React from "react";
+import Heading from "./heading";
+import { z } from "zod";
+import { zodResolver } from "@hookform/resolvers/zod";
+import { useForm } from "react-hook-form";
+import { Button } from "@/ui/button";
+import { Textarea } from "@/ui/textarea";
+import {
+ Form,
+ FormControl,
+ FormField,
+ FormItem,
+ FormLabel,
+ FormMessage,
+} from "@/ui/form";
+import { Input } from "@/ui/input";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/ui/select";
+import { cn } from "@/lib/utils";
+
+const formSchema = z.object({
+ name: z.string().min(2).max(50),
+ email: z.string().email(),
+ budget: z.string(),
+ message: z.string().max(500),
+});
+
+function ContactForm() {
+ // 1. Define your form.
+ const form = useForm
>({
+ resolver: zodResolver(formSchema),
+ });
+
+ // 2. Define a submit handler.
+ function onSubmit(values: z.infer) {
+ // Do something with the form values.
+ // ✅ This will be type-safe and validated.
+ console.log(values);
+ }
+
+ return (
+
+
+ );
+}
+
+export default ContactForm;
diff --git a/src/components/footer.tsx b/src/components/footer.tsx
new file mode 100644
index 0000000..4ecc56c
--- /dev/null
+++ b/src/components/footer.tsx
@@ -0,0 +1,32 @@
+import Link from "next/link";
+import React from "react";
+import { Button } from "./ui/button";
+
+function Footer() {
+ return (
+
+ );
+}
+
+export default Footer;
diff --git a/src/components/heading.tsx b/src/components/heading.tsx
index d4a61f8..ecb6856 100644
--- a/src/components/heading.tsx
+++ b/src/components/heading.tsx
@@ -1,8 +1,22 @@
+import { cn } from "@/lib/utils";
import React from "react";
-function Heading({ title, subTitle }: { title: string; subTitle?: string }) {
+function Heading({
+ title,
+ subTitle,
+ className,
+}: {
+ title: string;
+ subTitle?: string;
+ className?: string;
+}) {
return (
-
+
{subTitle}
{title}
diff --git a/src/components/me-card.tsx b/src/components/me-card.tsx
index cf5cb46..273e90f 100644
--- a/src/components/me-card.tsx
+++ b/src/components/me-card.tsx
@@ -3,6 +3,36 @@ import { Button } from "./ui/button";
import Image from "next/image";
import { cn } from "@/lib/utils";
import Link from "next/link";
+import { SocialIcon, socials } from "@/app.config";
+
+const icons = {
+ github: (props: any) => (
+
+ ),
+ discord: (props: any) => (
+
+ ),
+};
function MeCard({
className,
@@ -22,12 +52,7 @@ function MeCard({
>
-
+
@@ -35,13 +60,27 @@ function MeCard({
Available for work
-
*/}
+
-
+
A Software Engineer who has developed countless innovative solutions.
diff --git a/src/components/navbar.tsx b/src/components/navbar.tsx
index b721a1a..f3bf72e 100644
--- a/src/components/navbar.tsx
+++ b/src/components/navbar.tsx
@@ -1,24 +1,59 @@
+"use client";
import React from "react";
import { Button } from "@/ui/button";
import Link from "next/link";
-import NavigationBreadcrumbs from "./navigation-breadcrumbs";
+import { usePathname } from "next/navigation";
+
+import {
+ Breadcrumb,
+ BreadcrumbItem,
+ BreadcrumbLink,
+ BreadcrumbList,
+ BreadcrumbSeparator,
+} from "@/components/ui/breadcrumb";
+import { appNavigator } from "@/app.config";
+import { cn } from "@/lib/utils";
function Navbar() {
+ const pathname = usePathname();
+ const isActive = (path: string) => pathname === path.replace(/\/#/g, "");
return (
-