Refactor and update project components for Next.js 15 compatibility (#6)

* refactor: update all modules to latest version

* refactor: update layout to match nextjs 15 convention

* fix: implement TopProgressBar as Client

* fix: remove unnecessary locale prop

* fix: update postcss.config.js export

* fix: comment out styles

* fix: ref usage in useIntersectionObserver and update Navbar

* chore: performance optimizations

* fix: simplify Loading component structure

* refactor: move ProjectCard component and add prop types validation
This commit is contained in:
Alvalen Shafel 2025-03-18 12:39:32 +07:00 • committed by GitHub
parent 481bc8324e
commit 7f0c142dda
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 3422 additions and 2569 deletions

View file

@ -1,4 +1,3 @@
import dynamic from "next/dynamic";
import "./globals.css";
import Navbar from "@/components/Navbar";
import { config } from "@fortawesome/fontawesome-svg-core";
@ -6,15 +5,20 @@ import "@fortawesome/fontawesome-svg-core/styles.css";
config.autoAddCss = false;
import "./nprogress.css";
import { Analytics } from "@vercel/analytics/react";
import Chat from "@/components/Chat";
import ClientTopProgressBar from "@/components/ClientTopProgressBar";
export const metadata = {
title: "Alvalens | Portofolio",
description:
title: "Alvalens | Portofolio",
description:
"My name is Alvalens, I'm a web developer and I'm passionate about it. I'm currently studying at Universitas Negeri Malang.",
author: "Alvalen Shafelbilyunazra",
siteUrl: "https://www.alvalens.my.id",
applicationName: "Alvalens",
keywords: [
author: "Alvalen Shafelbilyunazra",
siteUrl: "https://www.alvalens.my.id",
applicationName: "Alvalens",
keywords: [
"alvalens",
"alvalen",
"alvalen shafel",
@ -25,7 +29,8 @@ export const metadata = {
"alvalen porto",
"alvalen um",
],
openGraph: {
openGraph: {
type: "website",
url: "https://www.alvalens.my.id",
title: "Alvalens | Portofolio",
@ -40,23 +45,14 @@ export const metadata = {
},
],
site_name: "Alvalens | Portofolio",
},
}
};
import Chat from "@/components/Chat";
const TopProgressBar = dynamic(() => import("@/components/TopProgressbar"), {
ssr: false,
});
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
<TopProgressBar />
<ClientTopProgressBar />
<Navbar />
{children}
<Chat />