Files
tenext-next/components/shared/Footer.tsx
2026-08-03 14:42:01 +05:30

104 lines
3.6 KiB
TypeScript

import Link from "next/link";
import { siteConfig } from "@/data/site-config";
import { SocialIcons } from "@/components/shared/SocialIcons";
import { PageContainer } from "@/components/shared/PageContainer";
import { SiteLogo } from "@/components/shared/SiteLogo";
/**
* Footer — shared site-wide footer.
*
* Renders on every page via layout.tsx.
* Data sourced from `data/site-config.ts` — no hardcoded links.
*
* Structure (from reference):
* Left: Logo · social icons · outline "since 2024" text
* Right: Company links column · Services links column
* Bottom: Copyright · Terms/Privacy
*/
export function Footer() {
return (
<footer className="bg-tenext-dark px-5 pb-10 pt-16 md:pt-20">
<PageContainer>
{/* ── Top row: Logo + link columns ── */}
<div className="grid grid-cols-1 gap-12 md:grid-cols-2 lg:grid-cols-[1.5fr_1fr_1fr]">
{/* Brand column */}
<div className="flex flex-col items-start gap-8">
<Link href="/" aria-label={`${siteConfig.legalName} — Home`}>
<SiteLogo size={28} />
</Link>
<SocialIcons links={siteConfig.socials} />
{/* Outline "since 2024" decorative text */}
<span
className="mt-4 select-none font-sora text-[clamp(48px,6vw,80px)] font-bold leading-none tracking-tight"
style={{
WebkitTextStroke: "1px rgba(255,255,255,0.12)",
WebkitTextFillColor: "transparent",
}}
>
since 2024
</span>
</div>
{/* Company links */}
<div>
<h4 className="mb-6 font-sora text-sm font-semibold uppercase tracking-widest text-white">
Company
</h4>
<ul className="flex flex-col gap-3">
{siteConfig.footerLinks.company.map((link) => (
<li key={link.label}>
<a
href={link.href}
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>
</li>
))}
</ul>
</div>
{/* Services links */}
<div>
<h4 className="mb-6 font-sora text-sm font-semibold uppercase tracking-widest text-white">
Services
</h4>
<ul className="flex flex-col gap-3">
{siteConfig.footerLinks.services.map((link) => (
<li key={link.label}>
<a
href={link.href}
className="text-[15px] text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>
</li>
))}
</ul>
</div>
</div>
{/* ── Bottom bar ── */}
<div className="mt-14 flex flex-col items-center justify-between gap-4 border-t border-tenext-card-border pt-8 md:flex-row">
<p className="text-sm text-tenext-text-muted">
{siteConfig.copyright}
</p>
<div className="flex gap-6">
{siteConfig.legalLinks.map((link) => (
<a
key={link.label}
href={link.href}
className="text-sm text-tenext-text-muted transition-colors duration-300 hover:text-tenext-teal"
>
{link.label}
</a>
))}
</div>
</div>
</PageContainer>
</footer>
);
}