feat: refactor layout and links page, add AppShell component for improved structure

This commit is contained in:
Poyraz Avsever
2026-03-18 12:24:37 +03:00
parent 80da5424dc
commit 6627402267
5 changed files with 305 additions and 142 deletions
+2 -34
View File
@@ -1,12 +1,7 @@
import type { Metadata } from "next";
import "./globals.css";
import { SiteNavbar } from "@/components/site-navbar";
import { NekoFollower } from "@/components/neko-follower";
import { ANNOUNCEMENT_ITEMS } from "@/data/site-settings";
import { Icon } from "@iconify/react";
import Link from "next/link";
import { AnnouncementBar } from "poyraz-ui/organisms";
import { AppShell } from "@/components/app-shell";
export const metadata: Metadata = {
metadataBase: new URL("https://poyrazavsever.com"),
@@ -87,37 +82,10 @@ export default function RootLayout({
}: Readonly<{
children: React.ReactNode;
}>) {
const announcement = ANNOUNCEMENT_ITEMS[0];
return (
<html lang="tr">
<body className="min-h-dvh bg-background text-foreground antialiased">
<NekoFollower />
<div className="mx-auto flex w-full max-w-4xl flex-col overflow-hidden px-4 py-4 sm:px-6">
<SiteNavbar />
{announcement ? (
<AnnouncementBar
variant="branded"
dismissible={false}
icon={<Icon icon="mdi:sparkles" width={16} height={16} />}
action={
announcement.actionLabel && announcement.actionHref ? (
<Link
href={announcement.actionHref}
target="_blank"
rel="noreferrer"
className="text-xs font-bold underline"
>
{announcement.actionLabel}
</Link>
) : null
}
>
{announcement.text}
</AnnouncementBar>
) : null}
<main className="flex-1 overflow-hidden py-4">{children}</main>
</div>
<AppShell>{children}</AppShell>
</body>
</html>
);
+32 -1
View File
@@ -1,4 +1,35 @@
import { LinksContent } from "@/components/links-content";
import type { Metadata } from "next";
import { LinksContent } from "@/components/links-content";
export const metadata: Metadata = {
title: "Links",
description:
"Poyraz Avsever'in sosyal medya, portfolyo ve içerik bağlantılarına tek sayfadan ulaş.",
alternates: {
canonical: "/links",
},
openGraph: {
title: "Poyraz Avsever | Links",
description:
"Poyraz Avsever'in sosyal medya, portfolyo ve içerik bağlantılarına tek sayfadan ulaş.",
url: "https://poyrazavsever.com/links",
images: [
{
url: "/logo/cover.png",
width: 1536,
height: 512,
alt: "Poyraz Avsever Links sayfası kapak görseli",
},
],
},
twitter: {
card: "summary_large_image",
title: "Poyraz Avsever | Links",
description:
"Poyraz Avsever'in sosyal medya, portfolyo ve içerik bağlantılarına tek sayfadan ulaş.",
images: ["/logo/cover.png"],
},
};
export default function LinksPage() {
return <LinksContent />;