From 0be22beae33703a09b28a921571dc35f1115c05e Mon Sep 17 00:00:00 2001 From: Alvalen Date: Sun, 3 Sep 2023 08:45:12 +0700 Subject: [PATCH] [feat] project archive page --- app/(root)/page.js | 2 + app/globals.css | 26 ++++ app/projects/archive/page.js | 148 ++++++++++++++++++ app/projects/layout.js | 11 ++ app/projects/page.js | 291 +++++++++++++++++++++++++++++++++++ components/Footer.jsx | 36 +++++ components/Navbar.js | 6 +- 7 files changed, 517 insertions(+), 3 deletions(-) create mode 100644 app/projects/archive/page.js create mode 100644 app/projects/layout.js create mode 100644 components/Footer.jsx diff --git a/app/(root)/page.js b/app/(root)/page.js index 138c571..199f9bd 100644 --- a/app/(root)/page.js +++ b/app/(root)/page.js @@ -129,7 +129,9 @@ const MyPage = () => { done and currently working on.

diff --git a/app/globals.css b/app/globals.css index 963b6f7..e814308 100644 --- a/app/globals.css +++ b/app/globals.css @@ -16,6 +16,7 @@ html { font-size: 14px !important; } } + @media (max-width: 768px) { html { font-size: 13px !important; @@ -61,4 +62,29 @@ span { .active { color: rgb(255, 235, 87); +} + +td, th { + @apply py-2 px-3; +} + + +[title]:hover:after { + margin-left: 10px; + position: absolute; + content: attr(title); + padding: 0.5rem; + white-space: nowrap; + z-index: 1; + background-color: #333333; + color: #fff; + border-radius: 4px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + font-size: 14px; +} + +[title]:hover:after { + opacity: 1; + transform: translateY(0); + } \ No newline at end of file diff --git a/app/projects/archive/page.js b/app/projects/archive/page.js new file mode 100644 index 0000000..c2d5f87 --- /dev/null +++ b/app/projects/archive/page.js @@ -0,0 +1,148 @@ +"use client" +import { motion } from "framer-motion"; + +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faGithub } from "@fortawesome/free-brands-svg-icons"; +import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; + +const projects = [ + { + year: "2023", + title: "React Realtime Chat", + tech: "Javascript, React Js, Firebase, Daisy UI", + github: "https://github.com/Alvalens/react-realtime-chat", + preview: "https://react-chat-rouge.vercel.app", + }, + { + year: "2023", + title: "React Tools", + tech: "Javascript, React Js, TailwindCSS", + github: "https://github.com/Alvalens/react-tools", + preview: "react-tools-flax.vercel.app", + }, + { + year: "2023", + title: "Aleph Discord Bot", + tech: "Python, Serp API, Discord.py", + github: "https://github.com/Alvalens/aleph-discord-bot", + }, + { + year: "2023", + title: "Unmuh Jember Landing Page", + tech: "HTML, CSS, Javascript", + github: "https://github.com/Alvalens/unmuh-jember-landing-page", + preview: "https://alvalens.github.io/unmuh-jember-landing-page/", + }, +]; +export default function Page () { + return ( + <> +
+
+
+ + + + Archive + +
+ +
+ {/* invisible table */} + + + + + + + + + + + {projects.map((project, index) => ( + + + + + + + ))} + +
YearTitleTechnologyLink
{project.year}{project.title}{project.tech} +
+ {project.github && ( + + + + )} + {project.preview && ( + + + + )} +
+
+
+
+
+ + ); +} \ No newline at end of file diff --git a/app/projects/layout.js b/app/projects/layout.js new file mode 100644 index 0000000..22adb89 --- /dev/null +++ b/app/projects/layout.js @@ -0,0 +1,11 @@ +// generate layour with footer +import Footer from "@/components/Footer"; +export default function Layout({ children }) { + return ( + <> + + {children} +