diff --git a/app/[locale]/Footer.tsx b/app/[locale]/Footer.tsx new file mode 100644 index 00000000..83eaad84 --- /dev/null +++ b/app/[locale]/Footer.tsx @@ -0,0 +1,204 @@ +import { useTranslations } from "next-intl"; +import Link from "next/link"; +import { JSX, SVGProps } from "react"; + +export default function Footer() { + const tFooter = useTranslations("footer"); + + const navigation = { + main: [ + { name: tFooter("nav.licensingName"), href: "/legal/licensing" }, + { name: tFooter("nav.privacyPolicyName"), href: "/legal/privacy" }, + { name: tFooter("nav.TrademarksName"), href: "/legal/trademarks" }, + ], + social: [ + { + name: tFooter("socialNav.mastodon"), + href: "https://fosstodon.org/@rockylinux", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + + ), + }, + { + name: tFooter("socialNav.facebook"), + href: "https://www.facebook.com/rockylinuxofficial", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + { + name: tFooter("socialNav.instagram"), + href: "https://www.instagram.com/rockylinuxofficial", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + { + name: tFooter("socialNav.threads"), + href: "https://www.threads.net/@rockylinuxofficial", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + { + name: tFooter("socialNav.linkedin"), + href: "https://www.linkedin.com/company/rockylinux/", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + + + + ), + }, + { + name: tFooter("socialNav.x"), + href: "https://x.com/rocky_linux", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + { + name: tFooter("socialNav.github"), + href: "https://github.com/rocky-linux", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + { + name: tFooter("socialNav.youtube"), + href: "https://www.youtube.com/@RockyLinux", + icon: (props: JSX.IntrinsicAttributes & SVGProps) => ( + + + + ), + }, + ], + }; + + return ( +
+
+ +
+ {navigation.social.map((item) => ( + + {item.name} +
+

+ {tFooter("disclaimer")} +

+
+
+ ); +} diff --git a/app/[locale]/Header.tsx b/app/[locale]/Header.tsx index d33fb7a5..9c300cdb 100644 --- a/app/[locale]/Header.tsx +++ b/app/[locale]/Header.tsx @@ -1,4 +1,5 @@ import { useTranslations } from "next-intl"; +import Link from "next/link"; import Logo from "@/components/Logo"; import { Button } from "@/components/ui/button"; @@ -58,13 +59,13 @@ export default function Header() { aria-label="Global" > diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index bedf9648..93837fb7 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -9,6 +9,7 @@ import { cn } from "@/lib/utils"; import { ThemeProvider } from "@/components/ThemeProvider"; import Header from "./Header"; +import Footer from "./Footer"; import type { Metadata } from "next"; import type { ReactNode } from "react"; @@ -60,6 +61,7 @@ export default function RootLayout({ >
{children}
+