From 77140909ad19903d6583352bfb1db7c162593a13 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Wed, 18 Feb 2026 23:04:54 -0600 Subject: [PATCH] refactor: enhance Footer component with structured navigation - Replaced hardcoded links with a structured footerSections array for better organization and maintainability. - Updated the layout to improve accessibility and SEO, including ARIA labels for navigation sections. - Enhanced visual elements and spacing for a more polished appearance. --- apps/website/components/Footer.tsx | 152 +++++++++++++++++++---------- 1 file changed, 100 insertions(+), 52 deletions(-) diff --git a/apps/website/components/Footer.tsx b/apps/website/components/Footer.tsx index dcba265..a8361d2 100644 --- a/apps/website/components/Footer.tsx +++ b/apps/website/components/Footer.tsx @@ -1,67 +1,115 @@ "use client"; import Link from "next/link"; -import type { SVGProps } from "react"; import { Container } from "./Container"; import { NavLink } from "./NavLink"; import { Logo } from "./shared/Logo"; -import { buttonVariants } from "./ui/button"; -const I18nIcon = (props: JSX.IntrinsicAttributes & SVGProps) => ( - - - -); +const footerSections = [ + { + title: "Product", + ariaLabel: "Product and features", + links: [ + { href: "/", label: "Home" }, + { href: "/#features", label: "Features" }, + { href: "/#pricing", label: "Pricing" }, + { + href: "/features/application-deployment-platform", + label: "Application Deployment Platform", + }, + { href: "/contact", label: "Contact" }, + ], + }, + { + title: "Compare & Learn", + ariaLabel: "Comparisons and guides", + links: [ + { + href: "/dokploy-vs-coolify", + label: "Dokploy vs. Coolify", + }, + { href: "/blog", label: "Blog" }, + { + href: "https://docs.dokploy.com/docs/core", + label: "Documentation", + external: true, + }, + ], + }, + { + title: "Legal", + ariaLabel: "Legal and policies", + links: [ + { href: "/terms-of-service", label: "Terms of Service" }, + { href: "/privacy", label: "Privacy Policy" }, + ], + }, +] as const; export function Footer() { return ( -